【发布时间】:2016-08-22 08:21:52
【问题描述】:
我有一个几乎简单的想法:我想为带有数据绑定 API 和 BindingAdapter 的微调器生成一个适配器。这是我要使用的 XML:
<Spinner
android:id="@+id/country"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:value="@{address.country}"
app:data="@{@array/countries}"
app:keys="@{@array/iso_3166_2}"/>
这里的地址是一个简单的类,它有一个名为country 的字段,它是一个字符串,将包含一个 ISO-3166-2 字符串。为简单起见,值将是“DE”或“US”。
这是我的简化版arrays.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="iso_3166_2">
<item>DE</item>
<item>US</item>
</string-array>
<string-array name="countries">
<item>@string/country_DE</item>
<item>@string/country_US</item>
</string-array>
</resources>
对于绑定,我写了这个 BindingAdapter:
@BindingAdapter({"value", "data", "keys"})
public static void generateAdapter(Spinner spinner,
String value,
@ArrayRes int data,
@ArrayRes int keys) {
}
当我尝试编译代码时出现此错误:
错误:任务“:app:compileDebugJavaWithJavac”执行失败。
java.lang.RuntimeException:发现数据绑定错误。
****/ 数据绑定错误 ****msg:标识符必须具有来自 XML 文件的用户定义类型。国家缺少它
文件:路径/到/the/spinner-above.xml
地点:95:31 - 95:39
****\数据绑定错误****
我的 xml 的第 95 行是这一行:app:value="@{address.country}"
你知道我做错了什么吗?
顺便说一句,我不确定与数组资源相关的注释是否正确?我发现没有办法将其限制为字符串数组。
【问题讨论】:
标签: android arrays android-resources android-databinding