Я слежу за обучением Google для постоянства комнаты, но я застрял, сейчас у меня все учебное пособие работает нормально, но мне нужно его расширить и я могу передавать параметры в ViewModel
потому что мне нужно иметь возможность отправлять различные запросы в репо, и, возможно, я ошибаюсь, но сейчас я делаю это в ViewModel
, который должен быть в состоянии прочитать его поле и выбрать правильный метод для поговорить с репо.
WordViewModel:
public class WordViewModel extends AndroidViewModel {
private WordRepository mRepository;
private LiveData<List<Word>> mAllWords;
public int mode = 0;
public WordViewModel (Application application) {
super(application);
mRepository = new WordRepository(application);
if (mode==0)
mAllWords = mRepository.getAllWords();
else
mAllWords = mRepository.getSomethingElse();
}
LiveData<List<Word>> getAllWords() { return mAllWords; }
public void insert(Word word) { mRepository.insert(word); }
}
Затем в упражнении запускается представление модели, которое мы получили
mWordViewModel = ViewModelProviders.of(this).get(WordViewModel.class);
mWordViewModel.mode=1; //MY ADDITION, not working
...
mWordViewModel.getAllWords().observe(this, new Observer<List<Word>>() {
@Override
public void onChanged(@Nullable final List<Word> words) {
// Update the cached copy of the words in the adapter.
adapter.setWords(words);
}
});
...
Теперь проблема в том, что поле доступа и редактирования (поле «mode»), которое я создал, не работает, это похоже на то, что поле сбрасывается при фактическом вызове ViewModel
, и поэтому всегда равно 0. Что я скучаю? Какой самый простой обходной путь, учитывая, что этот режим только для объяснения, и в конечном итоге мне понадобится много параметров (поэтому создание различных ViewModel
не вариант)