3

首先,我可能实际上并没有理解什么是可变的实时数据是正确的。

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

视图模型

public LiveData<Question> getQuestionLiveData(int id) {
  return questionRepository.getQuestionLiveData(id);
}

然后在 View 中观察它

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

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

我要么遗漏了一些东西,要么我不能这样做,所以欢迎任何帮助谢谢

4

1 回答 1

-1

在这种情况下,不需要MutableLiveData. MutableLiveDataLiveData公开暴露setValue()postValue()方法。因此,如果您不在LiveDataViewModel 类中设置值,则不需要MutableLiveData. 这里 Dao 类LiveData为您生成,您应该observe这样做LiveData

于 2019-05-03T03:14:03.363 回答