Enable/disable 基于适配器是否有项目的EditText

Enable/disable EditText based on whether adapter has items

我正在使用数据绑定库。我在 XML:

中有这个
<EditText
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:enabled="@{!myAdapter.isEmpty}"/>

我希望仅当 Spinner 适配器不为空时才启用 EditText。当应用程序启动时,EditText 被禁用。到目前为止,还不错。

然后,在我的 activity 中,项目被插入到适配器中。但是之后:

myAdapter.notifyDataSetChanged();

EditText 未启用。我还需要做些什么吗?

要能够通知数据绑定,您可以像这样使用ObservableBoolean

...
<variable name="isAdapterEmpty"
          type="android.databinding.ObservableBoolean" />
...
<EditText
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:enabled="@{!isAdapterEmpty}"/>

然后像这样通知数据绑定有关更改:

myAdapter.notifyDataSetChanged();
isAdapterEmpty.set(myAdapter.isEmpty());

或者你可以在你的适配器中创建你自己的方法,它将 return ObservableBoolean 而不是简单的布尔值,并提供管理这个值到适配器的能力。