androidkotlinrx-javarx-kotlin

Using Observable in Kotlin to parse a API response


I am trying to parse the data from the server to my mobile device and I am using Rx , Kotlin , retrofit for this

ApiInterface.kt

@GET("api/v1/admin/class/getUsers/learner/{classId}")
    fun getStudentsRx(
        @Header("access_token") accessToken: String,
        @Path("classId") apiKey: String
    ): Observable<StudentResultResponse>

I am trying to subscribe as follows:

 private fun getServerDataDisposable(dataService: ApiInterface): Disposable {
        return dataService.getStudentsRx(accessToken,classId)
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeWith(object: DisposableSingleObserver<List<StudentModel>>(), Observer<StudentResultResponse> {

                override fun onSuccess(movies: List<StudentModel>) {
                }

                override fun onError(e: Throwable) {

                }

                override fun onChanged(t: StudentResultResponse?) {
                    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
                }

            })
    }

I am getting error:

enter image description here


Solution

  • check below answer...

    private fun getServerDataDisposable(dataService: ApiInterface): Disposable {
        return dataService.getStudentsRx(accessToken,classId)
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeWith(object: DisposableSingleObserver<StudentResultResponse>(), Observer<StudentResultResponse> {
    
                    override fun onSuccess(t: StudentResultResponse) {
                        TODO("Not yet implemented")
                    }
    
                    override fun onError(e: Throwable) {
                        TODO("Not yet implemented")
                    }
    
                    override fun onComplete() {
                        TODO("Not yet implemented")
                    }
    
                    override fun onNext(t: StudentResultResponse) {
                        TODO("Not yet implemented")
                    }
    
                })
    }