将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);
}
什么都没发生。进度栏保持不可见!但是,如果将 initial 值设置为 true ,进度条将变为可见!
问::如何使用数据绑定来最初隐藏视图然后显示它? (请注意,除了可见性切换之外,我所有的绑定都起作用。)
结果是,由于数据绑定框架中的某些奇怪的优先规则(错误),以下方法破坏了双向绑定:
public boolean getIsLoading() { return isLoading.get(); }