使用RxJava将数据从ViewModel移动到片段
我正在尝试使用MVVM架构构建应用程序。 但我不知道在使用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
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(这个,观察者{
是吗?让我来{
...
}
})
}