我正在尝试使用DataBinding for Integer数据创建RecyclerView
,我已经通过在string-array
中声明string.xml
来尝试使用字符串数据,here是来自在哪里我参考了。
现在我尝试使用integer-array
实现它,但无法从xml访问它。
这是我的integer.xml
<integer-array name="hours">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
<item>11</item>
<item>12</item>
</integer-array>
这是我的xml文件
<android.support.v7.widget.RecyclerView
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:entries="@{@integerArray/hours}">
和我的自定义绑定适配器
@BindingAdapter("entries")
public static void entries(RecyclerView recyclerView, Integer[] array) {
recyclerView.setAdapter(new SimpleArrayAdapter(array));
}
但它显示错误line 1:0 token recognition error at: '@integerArray/'
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Identifiers must have user defined types from the XML file. hours is missing
答案 0 :(得分:5)
从document本身找到解决方案,我犯了愚蠢的错误。它应该是intArray
而不是integerArray
,而BindingAdapter
应该是int[]
app:entries="@{@intArray/hours}"
和适配器应该是
@BindingAdapter("entries")
public static void entries(RecyclerView recyclerView, int[] array) {
recyclerView.setAdapter(new SimpleArrayAdapter(array));
}
答案 1 :(得分:0)
感谢您的回答。在这里,我想分享从integer-array
Drawable
资源绑定图像的类似解决方案。
我的integer-array
的{{1}}资源:
Drawable
我的<resources>
<integer-array name="platform_images">
<item>@drawable/android</item>
<item>@drawable/iphone</item>
<item>@drawable/windows</item>
</integer-array>
</resources>
功能:
BindingAdapter
我的object DataBindingUtil {
@BindingAdapter("imageIndex", "images")
@JvmStatic
fun setImageResource(imageView: ImageView, imageIndex: Int, images: TypedArray) {
imageView.setImageResource(images.getResourceId(imageIndex, 0))
}
}
:
ImageView