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
而不是简单的布尔值,并提供管理这个值到适配器的能力。
我正在使用数据绑定库。我在 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
而不是简单的布尔值,并提供管理这个值到适配器的能力。