Мой BindingAdapter запускается только один раз, хотя я обновляю свои LiveData несколько раз.
public class ButtonViewBindingAdapter
{
@BindingAdapter("hideIfZero")
public static void setHideIfZero(View view, MutableLiveData<Integer> currentPosition)
{
view.setVisibility(currentPosition.getValue() == 0 ? View.GONE : View.VISIBLE);
}
}
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewModel"
type="com.package.PermissionsViewModel"/>
<variable
name="clickHandler"
type="com.package.PermissionsActivity.ClickHandler"/>
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/buttonNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:background="@null"
android:onClick="@{() -> clickHandler.nextSlide()}"
android:text="@string/intro_next"
android:textColor="@android:color/white"
/>
<Button
android:id="@+id/buttonBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:background="@null"
android:onClick="@{() -> clickHandler.previousSlide()}"
android:text="@string/intro_back"
android:textColor="@android:color/white"
app:hideIfZero="@{viewModel.currentSlidePosition}"/>
</RelativeLayout>
</layout>
public class PermissionsViewModel extends ViewModel
{
private MutableLiveData<Integer> currentSlidePosition = new MutableLiveData<>();
public PermissionsViewModel()
{
currentSlidePosition.setValue(0);
}
public void setCurrentSlidePosition(final int position)
{
currentSlidePosition.setValue(position);
}
public MutableLiveData<Integer> getCurrentSlidePosition()
{
return currentSlidePosition;
}
}
Когда я обновляю значение в моей модели представления, видимость по-прежнему не меняется.BindingAdapter не запускается более одного раза.Что мне здесь не хватает?Я хочу, чтобы он скрывался, когда позиция равна 0, в противном случае он должен отображаться.