У меня возникли проблемы с пониманием того, как парадигма Fragment + ViewModel работает с представлением, подобным EditText.
Это EditText, очевидно, он будет изменен в представлении (фрагменте). Но я также хочу иметь возможность изменять его в ViewModel: например. чтобы стереть его текст.
Вот код в классе Fragment:
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
...
comment = mViewModel.getComment();
comment.observe(getViewLifecycleOwner(), new Observer<String>() {
@Override
public void onChanged(String s) {
commentView.setText(s);
}
});
...
commentView.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
mViewModel.setComment(String.valueOf(s));
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) { }
});
Как видите, я установил наблюдатель, поэтому, когда я изменяю значение MutableLiveData, представление изменяется. И я устанавливаю наблюдатель, поэтому, когда я (при использовании приложения) изменяю значение представления, MutableLiveData изменяется.
Вот код класса ModelView:
public void addRegister() {
...
String comment = this.comment.getValue();
...
this.comment.setValue("");
Когда я запускаю приложение, ошибка не появляется, но оно зависает. Я думаю, из-за бесконечного цикла. Как мне подходить к EditTexts с этой парадигмой View + ViewModel? Что я не понимаю?
Заранее большое спасибо!
getComment()
? Можете ли вы показать весь свой класс ViewModel - person Rafsanjani   schedule 23.01.2020LiveData
вместоMutableLiveData
- person Samir Spahic   schedule 23.01.2020