Не работает обновление TextView из DataBinding (ViewModel) во Fragment

Рейтинг: 0Ответов: 0Опубликовано: 23.06.2023

Пытаюсь использовать 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);
    }
}

Ответы

Ответов пока нет.