首先,我可能实际上并没有真正理解哪些可变实时数据正确。

我使用实时数据从房间中获取数据,然后将其显示给用户界面,这是一个有答案的问题,因此在问题的结尾,我想用正确的答案,花费的时间等更新数据库。

我无法确定如何使用可变实时数据,因为几乎没有有用的信息,或者我非常愚蠢!

因此,首先,我是否可以使用可变的实时数据实际更新数据库?

如果是这样怎么办? (我不喜欢这样问,但我真的很沮丧)



@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);


所以我可以使用更新值,但是会引发转换错误。

我要么丢失了一些东西,要么我做不到,因此欢迎您提供任何帮助,谢谢

最佳答案

在这种情况下,不需要MutabaleLiveDataMutabaleLiveDataLiveData,它公开公开setValue()postValue()方法。因此,如果未在ViewModel类中设置LiveData值,则无需MutabaleLiveData。在这里,Dao类会为您生成LiveData,您应该observeLiveData

10-05 18:44