首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:设置LiveData为MutableLiveData

Android:设置LiveData为MutableLiveData
EN

Stack Overflow用户
提问于 2019-05-03 10:40:20
回答 1查看 2.2K关注 0票数 3

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

我使用实时数据从房间中获取数据,然后将其显示给UI,这是一个有答案的问题,所以在问题的最后,我想用正确的答案更新数据库,等等。

我不知道如何使用可变的实时数据,因为它几乎没有有用的信息,或者我非常愚蠢!

所以,首先,我可以用可变的实时数据来更新数据库吗?

如果是这样的话,是怎么做的?(我不喜欢问这个,但我真的被难住了)

Dao

代码语言:javascript
复制
@Query("SELECT * FROM question_table WHERE :id = uoe_id")
LiveData<Question> getQuestionLiveData(int id);

存储库

代码语言:javascript
复制
public LiveData<Question> getQuestionLiveData(int id) {
  return questionDao.getQuestionLiveData(id);
}

ViewModel

代码语言:javascript
复制
public LiveData<Question> getQuestionLiveData(int id) {
  return questionRepository.getQuestionLiveData(id);
}

然后在视图中观察它

代码语言:javascript
复制
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////

                }
            }
        });

下一部分是我不确定的地方。我在视图模型中添加了以下内容

代码语言:javascript
复制
MutableLiveData mutableLiveData = new MutableLiveData();

然后尝试将this赋值给问题

代码语言:javascript
复制
mutableLiveData = (MutableLivedata) getQuestionLiveData(id);

所以我可以使用更新值,但这会抛出一个强制转换错误。

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

EN

回答 1

Stack Overflow用户

发布于 2019-05-03 11:14:03

在这种情况下,不需要MutableLiveDataMutableLiveData是公开公开setValue()postValue()方法的LiveData。因此,如果您没有在ViewModel类中设置LiveData值,就没有必要使用MutableLiveData。这里,Dao类为您生成LiveData,您应该对该LiveData执行observe操作。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55962632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档