我最近发现Google创建了数据绑定库(link),我想知道可以通过标记传递给布局变量的数据有哪些限制?
在我的项目中,我要求在水平行中具有四个ImageView,并带有一些文本叠加层和自定义背景,这些结构应具有一定的遵循性
... layout above ...
[ img ] [ img ] [ img ] [ img ]
... layout below ...
我知道总是会有4张图像,所以我只是通过将项目复制4次在XML文件中手动创建它们。这绝对是处理此问题的最糟糕的方法之一,但是我需要每个项目都具有唯一的语音(?)ID(即“ @ + id / img_flower”,“ @ + id / img_car”),以便我可以将适当的数据设置为后面的每个代码。
我意识到我可能只是浏览容器布局的子视图并适当地设置数据,但是如果 可以接受id作为变量参数,那么xml只会缩小为具有适当ID的4个元素。
布局/img.xml
<layout ... >
<data>
<variable name="img_id", type="String"/>
</data>
<ImageView
andorid:id="@{img_id}"
... />
layout / my_view.xml
<LinearLayout ... >
...
<include
layout="@layout/img,
bind:img_id=@{"flower"} >
<include
layout="@layout/img,
bind:img_id=@{"car"} >
...
</LinearLayout>
但是将String as和ID传递会在编译时异常中解析为ID字段的不兼容类型。问题是-数据绑定库仅限于String,Int,Collections类型,还是可以将它们与其他值混合?