数据绑定库-通过<include>标签中的变量设置ID

时间:2018-06-22 10:53:19

标签: android android-layout android-databinding

我最近发现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类型,还是可以将它们与其他值混合?

0 个答案:

没有答案