首先,我可能并没有真正理解什么是可变的实时数据。
我使用实时数据从房间中获取数据,然后将其显示给UI,这是一个有答案的问题,所以在问题的最后,我想用正确的答案更新数据库,等等。
我不知道如何使用可变的实时数据,因为它几乎没有有用的信息,或者我非常愚蠢!
所以,首先,我可以用可变的实时数据来更新数据库吗?
如果是这样的话,是怎么做的?(我不喜欢问这个,但我真的被难住了)
Dao
@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();然后尝试将this赋值给问题
mutableLiveData = (MutableLivedata) getQuestionLiveData(id);所以我可以使用更新值,但这会抛出一个强制转换错误。
我要么遗漏了什么,要么我不能这样做,所以欢迎任何帮助,谢谢
发布于 2019-05-03 11:14:03
在这种情况下,不需要MutableLiveData。MutableLiveData是公开公开setValue()和postValue()方法的LiveData。因此,如果您没有在ViewModel类中设置LiveData值,就没有必要使用MutableLiveData。这里,Dao类为您生成LiveData,您应该对该LiveData执行observe操作。
https://stackoverflow.com/questions/55962632
复制相似问题