首先,我可能实际上并没有真正理解哪些可变实时数据正确。
我使用实时数据从房间获取数据,然后将其显示给UI,这是一个有问题的问题,因此在问题结尾,我想使用正确的答案,花费的时间等更新数据库。
我无法确定如何使用可变实时数据,因为几乎没有有用的信息,或者我非常愚蠢!
首先,我可以使用可变的实时数据实际更新数据库吗?
如果是这样怎么办? (我不喜欢这样问,但我真的很沮丧)
道
@Query("SELECT * FROM question_table WHERE :id = uoe_id")
LiveData<Question> getQuestionLiveData(int id);
回购
public LiveData<Question> getQuestionLiveData(int id) {
return questionDao.getQuestionLiveData(id);
}
ViewModel
public LiveData<Question> getQuestionLiveData(int id) {
return questionRepository.getQuestionLiveData(id);
}
然后在视图中观察
viewModel.getQuestionLiveData(packageId).observe(getViewLifecycleOwner(), new Observer<com.questionTest.practice.Model.Question>() {
@Override
public void onChanged(com.questionTest.practice.Model.QuestionQuestion question) {
Do stuff here////
}
}
});
下一部分是我不确定的地方。我在视图模型中添加了这个
MutableLiveData mutableLiveData = new MutableLiveData();
,然后尝试将其分配给问题
mutableLiveData = (MutableLivedata) getQuestionLiveData(id);
所以我可以使用更新值,但这会引发转换错误。
我丢失了一些东西,或者我无法做到这一点,所以任何帮助都将受到欢迎
答案 0 :(得分:0)
在这种情况下,不需要MutabaleLiveData
。 MutabaleLiveData是LiveData
,公开公开了setValue()
和postValue()
方法。因此,如果未在ViewModel类中设置LiveData
值,则无需MutabaleLiveData
。这里,Dao类为您生成了LiveData
,您应该observe
那个LiveData
。