Android: установка LiveData как MutableLiveData - PullRequest
2 голосов
/ 03 мая 2019

Во-первых, я, возможно, не совсем понимаю, что такое изменяемые живые данные.

Я получаю данные из комнаты, используя живые данные, а затем показываю их в пользовательском интерфейсе, это вопрос с ответами, поэтому в концевопроса я хотел бы обновить базу данных правильными ответами, затраченным временем и т. д. и т. д.

Я не могу понять, как использовать изменяемые данные в реальном времени, поскольку на них нет никакой полезной информации или ям невероятно глупо!

Итак, во-первых, могу ли я на самом деле обновить базу данных изменяемыми живыми данными?

, если да, то как?(мне не нравится спрашивать об этом, но я действительно в тупике)

Дао

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

, чтобы я мог использовать обновление значений, но это приводит к ошибке Casting.

Я либо что-то упустил, либо я не могу этого сделать, поэтому любая помощь будет приветствоваться, спасибо

1 Ответ

0 голосов
/ 03 мая 2019

В этом случае MutabaleLiveData не требуется. MutabaleLiveData - это LiveData, который публично предоставляет метод setValue() и postValue(). Поэтому, если вы не устанавливаете LiveData значения внутри класса ViewModel, вам не нужно MutabaleLiveData. Здесь класс Dao генерирует LiveData для вас, и вы должны observe, что LiveData.

...