【发布时间】:2021-03-30 22:39:23
【问题描述】:
我有一个使用 MVVM 架构的 android 应用程序。单击按钮时,我会启动一个调用 ViewModel 方法来发出网络请求的协程。在我的 ViewModel 中,我有一个 LiveData 可观察到该请求的返回,但我没有看到它更新。似乎我的存储库方法没有被调用,我不确定为什么。
UI 点击监听器
searchButton.setOnClickListener{
CoroutineScope(IO).launch{
viewModel.getUser(username.toString())
}
}
ViewModel - Observables 和调用的方法
private var _user: MutableLiveData<User?> = MutableLiveData<User?>()
val user: LiveData <User?>
get() = _user
...
suspend fun getUser(userId:String) {
_user = liveData{
emit(repository.getUser(userId))
} as MutableLiveData<User?>
}
...
当我调试通过时,执行进入 ViewModel 的 getUser 方法,但没有进入 liveData 范围来更新我的 _user MutableLiveData observable,我不确定我在做什么错了。
【问题讨论】:
标签: android kotlin android-livedata kotlin-coroutines android-mvvm