У меня есть пользовательский макет, который я хочу использовать в нескольких местах, поэтому я хочу иметь возможность передавать ему заголовок, поскольку это единственное значение, которое действительно изменится.Я знаю, что могу сделать это, связав данные, но не могу получить данные для рендеринга.
В моем activity.main
у меня есть:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.r.e.MainActivity">
<include
layout="@layout/switch_preference_custom_title"
app:passedTitle="@{@string/hello_world}" />
</RelativeLayout>
</layout>
Я определил свой собственный макетследующим образом:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" >
<data>
<variable
name="passedTitle"
type="String"/>
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{passedTitle}" />
</RelativeLayout>
</layout>
Я также добавил
dataBinding {
enabled = true
}
в свой build.gradle.Мой проект компилируется и работает нормально, а макет действительно рендерится (я могу сказать, давая ему фон), но текст - пустая строка.