Я хочу использовать один из моих макетов несколько раз в одном и том же виде, используя include
. Допустим, у меня есть custom.xml
, включая несколько TextView
.
custom.xml
:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
android:orientation="vertical" >
<TextView
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/text2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Я несколько раз включал этот макет в parent.xml
:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<include layout="@layout/custom"
android:id="@+id/layout1"/>
<include layout="@layout/custom"
android:id="@+id/layout2"/>
</LinearLayout>
Теперь я хочу привязать свои модели данных к этому макету, но проблема в том, что я не знаю, как привязать две разные модели данных к layout1
и layout2
, поскольку обе они ссылаются на один макет, который равен custom.xml
. Насколько я знаю, я могу добавить этот тег в свой макет xml:
<data>
<variable name="user" type="com.myproject.model.User"/>
</data>
Но мне нужно привязать две разные модели данных к custom.xml
.
Мой вопрос в том, как иметь включенный макет несколько раз в одном представлении и передавать им разные данные с помощью привязки данных? что-то вроде передачи данных в макет, но не статической привязки модели к xml.
Я также нашел этот вопрос, в котором точно такая же проблема Но поскольку привязка данных выпущена в более новых версиях Android, я ищу способ решить ту же проблему с помощью привязки данных. Вот часть вопроса, которую я процитировал для пояснения:
Например, у меня есть тщательно продуманный макет, который я хочу отобразить в своем представлении три раза. Для каждого из этих экземпляров потребуются разные значения. Поскольку
include
- это, по сути, взять этот XML и вставить его сюда, мне понадобится что-то более мощное.