Android:将LiveData设置为MutableLiveData

时间:2019-05-03 02:40:20

标签: android mutablelivedata

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

我使用实时数据从房间获取数据,然后将其显示给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);

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

我丢失了一些东西,或者我无法做到这一点,所以任何帮助都将受到欢迎

1 个答案:

答案 0 :(得分:0)

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