我正在学习Kotlin,并尝试使用相同的ViewModel来显示用户列表和编辑用户。
我正在使用房间,所以我有一个需要观察的"getPersonnelById(("。问题是我只想观察一次,但我不知道如何做…
这是我的功能
private fun retrievePersonnelData(id: Long){
if(id != -1L){
val observer = dataSource.getPersonnelById(id).observeForever{
newPersonnel.value = it
Timber.e("Valeur newPersonnel = ${newPersonnel.value}")
}
}
}
我已经按照建议使用了observeForever,但我不知道在这种情况下如何使用removeObserver。。。
非常感谢
如果您需要一次性获取数据,请考虑在Room中使用suspend函数并按需获取数据。
如果您需要获得一个特定的Personnel
对象并观察其DB中的变化,请将getPersonnelById(id)
的值存储在LiveData<Personnel>
中,并从Activity/Fragment 中观察它
observeForever
主要用于测试目的,您应该更好地使用observe函数,而不是每次都手动删除一个观察者。