Что, если вы прямо так используете в ViewModel
:
templateList = new ArrayList<>();
mRepository
.getmAllQuestionTemplates(selectedField)
.observe(activity, new Observer<List<QuestionTemplate>>() {
@Override
public void onChanged(@Nullable List<QuestionTemplate> questionTemplates) {
Log.e("onChanged","onChanged");
if (questionTemplates != null) {
templateList.addAll(questionTemplates);
}
}
});
Нет необходимости брать новый объект LiveData
в ViewModel
, вы также можете непосредственно наблюдатьиз этого LiveData
возвращается к вам.
Редактировать:
Проверить другой обходной путь,
Ваш DAO будет выглядеть так:
@Dao
public interface QuestionTemplateDao {
@Query("SELECT question_template_table.ID,question_template_table.Text,question_template_table.FieldNo from question_template_table where question_template_table.FieldNo = :fieldNO")
List<QuestionTemplate> getTemplate(int fieldNO);
}
Ваш репозиторий,
public void getmAllQuestionTemplates(int field, MutableLiveData<List<QuestionTemplate>> liveData) {
if(questionTemplateDao==null)
questionTemplateDao=db.questionTemplateDao();
liveData.setValue(questionTemplateDao.getTemplate(field));
}
Ваша ViewModel,
mRepository.getmAllQuestionTemplates(selectedField, (MutableLiveData<List<QuestionTemplate>>) templateLiveData);
templateList = new ArrayList<>();
templateLiveData.observe(activity, new Observer<List<QuestionTemplate>>() {
@Override
public void onChanged(@Nullable List<QuestionTemplate> questionTemplates) {
Log.e("onChanged","onChanged");
if (questionTemplates != null) {
templateList.addAll(questionTemplates);
}
}
});