问题是需要一个
生命周期所有者
用于观察存储库中的LiveData。
LiveData<LoadingStatus>
每一次
fetchMore()
被称为。每次都会创建一个新的LiveData。最好的情况下,你会想要的功能
获取更多()
Repository{
val status = LiveData<LoadingStatus>()
fun fetchMore() {
status.postValue(LOADING)
// Pseudo code for actually loading more items
status.postValue(FINISHED LOADING)
}
}
然而,你将有一个问题,观察
status
ViewModel
我的建议是这样的:
ViewModel{
val loadingStatus: MutableLiveData<LoadingStatus>
init{
repository.observeStatus()
.subscribe( event -> loadingStatus.postValue(event))
}
fun getMoreData(){
repository.fetchMore()
}
}
Repository{
val status = BehaviorSubject.create<LoadingStatus>()
fun observeStatus(): Observable<LoadingStatus> {
return status
}
fun fetchMore(){
status.onNext(LOADING)
// Pseudo code for actually loading more items
status.onNext(FINISHED LOADING)
}
}
Fragment{
viewModel.loadingStatus.observe()
}
请注意,所有这些都是伪代码,应该比这更干净。