Не работает обновление TextView из DataBinding (ViewModel) во Fragment
Пытаюсь использовать DataBinding (ViewModel) из Fragment, но данные почему-то не хотят обновляться. Помогает повторная отправка в binding или поворот экрана.
binding.setViewModelDoc(modelDocWeight);
Данные меняю так
modelDocWeight.setWeight(12);
Пробовал разные варианты binding.setLifecycleOwner(); но всё равно не работает. Подскажите, пожалуйста, в чём может быть проблема, как заставить обновляться данные в TextView без повторной отправки setViewModelDoc?
Вот так прописано в макете
<variable
name="viewModelDoc"
type="ru.s.uch.viewModel.ViewModelDoc" />
</data>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text='@{Integer.toString(viewModelDoc.weight)}'/>
Привязка Модели к макету во Фрагменте
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentDocWeightInfoBinding.inflate(getLayoutInflater());
View view = binding.getRoot().getRootView();
modelDocWeight = new ViewModelProvider(requireActivity()).get(ViewModelDoc.class);
//Устанавливаем переменные
binding.setLifecycleOwner(this.getViewLifecycleOwner());
binding.setViewModelDoc(modelDocWeight);
Сама ViewModel
public class ViewModelDoc extends AndroidViewModel {
private MutableLiveData<Integer> weight = new MutableLiveData<>(0);
public Integer getWeight() {
return this.weight.getValue();
}
public void setWeight(Integer tmWeight) {
this.weight.postValue(tmWeight);
}
}
Источник: Stack Overflow на русском