ObservableBoolean绑定不会更新进度条的可见性

时间:2018-12-27 20:42:54

标签: android android-databinding

AS 3.2.1targetSdkVersion 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);
}

什么都没发生。进度栏保持不可见!但是,如果将 initial 值设置为 true ,进度条将变为可见!

问::如何使用数据绑定来最初隐藏视图然后显示它? (请注意,除了可见性切换之外,我所有的绑定都起作用。)


更新

结果是,由于数据绑定框架中的某些奇怪的优先规则(错误),以下方法破坏了双向绑定:

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

0 个答案:

没有答案