Я хочу использовать один из своих макетов несколько раз в одном представлении, используя include
. Скажем, у меня есть custom.xml
, включая некоторые TextView
s.
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.
Я также нашел этот вопрос, который имеет точно такую же проблему. Но поскольку Data Binding выпущен в более новых версиях android, я ищу способ решить ту же проблему используя привязку данных. Вот часть этого вопроса, который я процитировал для разъяснения:
Например, у меня есть тщательно обработанный макет, который я хочу отобразить три раза, на мой взгляд. Каждому из этих случаев понадобятся разные значения. Поскольку
include
- это в основном прием XML и вставка его здесь мне нужно что-то более мощное.