首页 > 解决方案 > 数据绑定:无法将 ArrayAdpater 绑定到 AppCompatAutoCompleteTextView

问题描述

我的 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 ****

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

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

我已经尝试清除 IDE 生成的文件,如此处所述: Listener Binding; 找不到二传手。即使这似乎也不能解决我的问题。

标签: androidandroid-databinding

解决方案


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

正如它所说,我看了AutoCompleteTextViewBindingAdapter。并且找不到任何与命名空间相关的 BindingAdapter android:adapter。他们还没有定义它。

如果需要,您可以创建绑定适配器

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

推荐阅读