DataBindingでincludeしたレイアウトに値を渡す メモ
AndroidのDataBindingでincludeしたレイアウトに値を渡す時に少し悩んだのでメモ
変数の渡し方法
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}" />