DataBindingでincludeしたレイアウトに値を渡す メモ

AndroidのDataBindingでincludeしたレイアウトに値を渡す時に少し悩んだのでメモ

参考: Data Binding Library

変数の渡し方法

includeされるファイルが以下のような時

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:bind="http://schemas.android.com/apk/res-auto">
   <data>
       <variable name="user1" type="com.example.User"/>
   </data>
   <merge>
       <include layout="@layout/name"
           bind:user="@{user1}"/>
       <include layout="@layout/contact"
           bind:user="@{user1}"/>
   </merge>
</layout>

includeする側のレイアウトではbind:hoge属性を使って変数を渡すことができる
hogeの部分にはlayoutで指定したファイル内の変数名を指定する(今回の場合はuser1)

<data>
    <variable name="user2" type="com.example.User"/>
</data>
<LinearLayout ...>
    <include layout="@layout/name"
        bind:user1="@{user2}"/
</LinearLayout>

参考にした公式サイトの情報ではbind:user="@{user}"となっていてすこしわかりづらいですね・・・

リソースファイルの値を渡す方法

もし、includeするlayoutにリソースファイルの値を渡したい時の例

例: Stringの値を受け取ることができるレイアウトファイル
"@{@string/app_name}"のように指定すると良い

<data>
    <variable name="title" type="String"/>
</data>
 <include
     layout="@layout/layout_text"
     bind:title="@{@string/app_name}"
     />