【发布时间】:2019-05-11 03:03:53
【问题描述】:
我在我的 android 应用程序中遵循 MVVM 模式。以下是我将要讨论的文件:
PresentContestsFragmentPresentContestsViewModel
这是我的视图模型代码:
private val _contests = MutableLiveData<List<ContestsShortInfoModel>>()
val contests:LiveData<List<ContestsShortInfoModel>>
get() = _contests
fun getContests() {
viewModelScope.launch{
val contestLiveData = repository.getLiveContests()
contestLiveData.observeForever {
_contests.value = it
}
}
}
这是我的片段类代码
在它的 onActivityCreated 中我调用 viewModel.getContests() 然后 bindUI()
private fun bindUI() {
viewModel.contests.observe(this, Observer { list ->
list?.let{
// show this list in UI
}
})
}
一切正常,我的 UI 正在更新。我想问在视图模型中调用observeForever是否可以。如果不是,我应该如何删除观察者?
如果你有更好的方法,也请告诉。
请记住,当我在 repo 中调用存储库的 getLiveContests 时,我会检查是否需要从 Internet 获取新数据。无论如何,我从房间数据库返回 LiveData。如果获取了新数据,则会将其保存到房间中,并且由于我已返回 LiveData,因此我也会在 UI 中获得更新。
【问题讨论】:
标签: android mvvm android-livedata android-viewmodel android-mvvm