首先,我可能实际上并没有真正理解哪些可变实时数据正确。
我使用实时数据从房间中获取数据,然后将其显示给用户界面,这是一个有答案的问题,因此在问题的结尾,我想用正确的答案,花费的时间等更新数据库。
我无法确定如何使用可变实时数据,因为几乎没有有用的信息,或者我非常愚蠢!
因此,首先,我是否可以使用可变的实时数据实际更新数据库?
如果是这样怎么办? (我不喜欢这样问,但我真的很沮丧)
道
@Query("SELECT * FROM question_table WHERE :id = uoe_id")
LiveData<Question> getQuestionLiveData(int id);
回购
public LiveData<Question> getQuestionLiveData(int id) {
return questionDao.getQuestionLiveData(id);
}
视图模型
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);
所以我可以使用更新值,但是会引发转换错误。
我要么丢失了一些东西,要么我做不到,因此欢迎您提供任何帮助,谢谢
最佳答案
在这种情况下,不需要MutabaleLiveData
。 MutabaleLiveData是LiveData
,它公开公开setValue()
和postValue()
方法。因此,如果未在ViewModel类中设置LiveData
值,则无需MutabaleLiveData
。在这里,Dao类会为您生成LiveData
,您应该observe
该LiveData
。