Привязка ObservableBoolean не обновляет видимость индикатора выполнения - PullRequest
0 голосов
/ 27 декабря 2018

Использование AS 3.2.1 с targetSdkVersion 28.У меня есть RecyclerView с элементами, содержащими кнопку и индикатор выполнения.Видимость индикатора выполнения связана с ObservableBoolean с его начальным значением, установленным на false .

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true">

    <androidx.appcompat.widget.AppCompatImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:onClick="@{() -> data.onLoad()}" />

    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:visibility="@{data.isLoading ? View.VISIBLE : View.INVISIBLE}" />
</RelativeLayout>

В обработчике onClick кнопки я пытаюсьсделайте индикатор выполнения видимым, установив для этого значения значение true :

public void onLoad() {
    isLoading.set(true);
}

Ничего не происходит.Индикатор выполнения остается невидимым!Однако, если я установлю исходное значение на true , индикатор выполнения станет видимым!

Q: Как я могу использовать привязку данных к изначальноскрыть вид, а потом показать?(Обратите внимание, что все мои привязки работают, за исключением переключения видимости.)


UPDATE

Оказывается, что следующий метод нарушает двустороннюю привязку из-за какого-то странного правила приоритета (ошибка) в структуре привязки данных:

public boolean getIsLoading() { return isLoading.get(); }
...