数据绑定:无法将ArrayAdpater绑定到AppCompatAutoCompleteTextView

时间:2018-10-03 11:11:32

标签: android android-databinding

我的layout.xml文件中有一个AppCompatAutoCompleteTextView

<android.support.v7.widget.AppCompatAutoCompleteTextView
    android:id="@+id/warehouseDropdown"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/warehouse"
    android:adapter="@{viewModel.warehouseAdapter}/>

问题是,当我尝试构建项目时,出现以下错误:

****/ data binding error ****msg:Cannot find the setter for attribute 'android:adapter' with parameter type android.widget.ArrayAdapter on android.support.v7.widget.AppCompatAutoCompleteTextView. file:.../app/src/main/res/layout/activity_scan.xml loc:52:43 - 52:68 ****\ data binding error ****

但是,如果我从layout.xml文件中删除android:adapter行,并直接从活动中设置绑定,那么它就可以正常工作。像这样

AppCompatAutoCompleteTextView warehouseDropdown = findViewById(R.id.warehouseDropdown);
warehouseDropdown.setAdapter(viewModel.getWarehouseAdapter());

我已经尝试清除IDE生成的文件,如下所示: Listener Binding; Cannot Find the Setter。即使这样似乎也无法解决我的问题。

1 个答案:

答案 0 :(得分:1)

  

msg:找不到具有属性“ android:adapter”的设置器   参数类型为android.widget.ArrayAdapter   android.support.v7.widget.AppCompatAutoCompleteTextView

正如我所说,我看上去AutoCompleteTextViewBindingAdapter。并且找不到与android:adapter名称空间相关的任何BindingAdapter。他们尚未定义它。

您可以根据需要创建Binding Adapter

@BindingAdapter("android:adapter")
public static void setAutoCompleteAdapter(AutoCompleteTextView textView, ArrayAdapter adapter) {
    textView.setAdapter(adapter);
}