Android Data Binding: how to pass variable to include layout
Just create
<variable
for passing values to included layouts.Like
app:passedText="@{@string/app_name}"
Example
Like I want to pass String
to included layout. I will create a variable of type String
. Refer that String
to your TextView
. I created passedText
for example.
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
>
<data>
// declare fields
<variable
name="passedText"
type="String"/>
</data>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{passedText}"/> //set field to your view.
</layout>
Now add passedText
field to your <include
tag.
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<include
layout="@layout/layout_common"
app:passedText="@{@string/app_name}" // here we pass any String
/>
</LinearLayout>
</layout>
Note that both layouts (parent & included) should be binding layout
, wrapped with <layout
The documentation specifies
Here, there must be a user variable in both the name.xml and contact.xml layout files
I assume you should have this in your included layout:
<data>
<variable name="handler"
type="FocusChangeHandler"/>
</data>
For hardcoded string:
android:label="@{`Test 123`}"