Вам нужно сделать переменную isClockedIn
Наблюдаемое поле ,
Поэтому замените его с
public boolean isClockedIn = false;
на
public ObservableBoolean isClockedIn = new ObservableBoolean();
Примечание: также убедитесь, что xml имеет то же имя переменной, что и в вашей ViewModel
См. здесь
Редактировать:
Если вы не хотите делать ObservableField , тогда потребуются некоторые другие изменения.
Несмотря на ObservableField , вам необходимо увеличить наблюдаемое расширение BaseObservable
и в ваших livingata вам потребуется позвонить notifyPropertyChanged(BR.isClockedIn);
после изменения логического значения.
Если вы хотите использовать LiveData в качестве наблюдателя, сначала необходимо предоставить привязке жизненный цикл
// Specify the current activity as the lifecycle owner (in your activity/fragment).
binding.setLifecycleOwner(this);
В вашем ViewModel возьмите объект LiveDataчтобы наблюдать за изменениями и применить Преобразование к нему:
MutableLiveData<Boolean> dataToBeObserve = new MutableLiveData<>();
LiveData booleanDataChange = Transformations.map(dataToBeObserve, dataToBeObserve-> dataToBeObserve.value);
Теперь, используйте это booleanDataChange
для xml и измените значение MutableLiveDataсоблюдать данные ссобытие hange.
Примечание. Вы можете использовать одни и те же LiveData для событий изменения, просто нужно разделить определение на вызов конструктора.