android - 数据绑定:无法将 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; 找不到二传手。即使这似乎也不能解决我的问题。
解决方案
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);
}
推荐阅读
- karate - 我们可以使用空手道将 PEM 文件转换为 jks 文件吗
- swift - IQKeyboardManagerSwift:下一个/上一个按钮不可见
- node.js - 在 Azure 应用服务中利用 NodeJ 的多核应用服务计划 (Windows)
- sql-server - 将数据库从一个可用性组移动到另一个位于不同 SQL 实例上的可用性组
- javascript - 触发单个单词的语音合成事件
- c++ - 在 STL 容器中使用模板类
- spring - 自动生成 Spring Rest-Controller
- angular - 如何将可观察数组映射到不同的数据结构
- typo3 - 如何在底部显示 tt_news 相关文章
- java - 使用执行查询在左连接子句中添加 =value