根据适配器是否包含项目启用/禁用EditText

时间:2016-10-26 10:00:45

标签: android android-databinding

我正在使用数据绑定库。我在XML中有这个:

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

我希望只有当Spinner适配器不为空时才能启用EditText。应用启动时,会禁用EditText。到目前为止,非常好。

然后,在我的活动中,项目被插入适配器中。但之后:

myAdapter.notifyDataSetChanged();

未启用EditText。我还需要做更多其他事情吗?

1 个答案:

答案 0 :(得分:2)

能够通知数据绑定有关您可以使用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());

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