Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用RxJava将数据从ViewModel移动到片段_Java_Android_Kotlin_Rx Java_Android Livedata - Fatal编程技术网

使用RxJava将数据从ViewModel移动到片段

使用RxJava将数据从ViewModel移动到片段,java,android,kotlin,rx-java,android-livedata,Java,Android,Kotlin,Rx Java,Android Livedata,我正在尝试使用MVVM架构构建应用程序。 但我不知道在使用RxJava下载该值时如何将该值从ViewModel移动到片段 目前我有这个代码,但我不知道怎么做。 有人能帮忙吗 片段: viewModel.loadListOfCats().observe(this, Observer { it?.let { listOfCats.clear() listOfCats.addAll(it.l

我正在尝试使用MVVM架构构建应用程序。 但我不知道在使用RxJava下载该值时如何将该值从ViewModel移动到片段

目前我有这个代码,但我不知道怎么做。 有人能帮忙吗

片段:

viewModel.loadListOfCats().observe(this, Observer {
                it?.let {
                    listOfCats.clear()
                    listOfCats.addAll(it.listOfCats)
                    catAdapter.notifyDataSetChanged()
                }
            })
在ViewModel中:

fun loadListOfCats(): LiveData<ListOfCats>{
        compositeDisposable.add(listOfQuizzesRepository.getListOfCats()
            .subscribeWith(object: DisposableSingleObserver<ListOfCats>(){
                override fun onSuccess(t: ListOfCats) {
                    val listOfCats= t

                }

                override fun onError(e: Throwable) {

                }

            }))
        return ?
    }
fun loadListOfCats():LiveData{
compositeDisposable.add(listOfQuizzesRepository.getListOfCats())
.subscribowith(对象:DisposableSingleObserver(){
成功时覆盖乐趣(t:ListOfCats){
val listOfCats=t
}
覆盖有趣的错误(e:可丢弃){
}
}))
返回?
}

接收完成通过异步过程而不是同步过程工作。这意味着,当这个函数指向
返回?
时,Rx还没有完成它的工作

因此,您不能返回函数结束时从Rx获得的值

您必须在其onSuccess和onError回调中设置值

class YourViewModel {
    val listCats = MutableLiveData<ListOfCats>()

    fun loadListOfCats() {
        ...
            override fun onSuccess(t: ListOfCats) {
                listCats.value = t
            }
        ...
    }
}

class YourFragment {
    ...
    viewModel.listCats.observe(this, Observer {
        it?.let {
            ...
        }
    })
}
class YourViewModel{
val listCats=MutableLiveData()
有趣的loadListOfCats(){
...
成功时覆盖乐趣(t:ListOfCats){
listCats.value=t
}
...
}
}
分类你的片段{
...
viewModel.listCats.observe(这个,观察者{
是吗?让我来{
...
}
})
}