Получение вида с дублированным идентификатором из макета
Я хотел бы отобразить следующие пять раз
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/title"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/message"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/add"/>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/separator_height"
android:background="@color/separator"/>
Таким образом, я храню его в data_item.xml и пытаюсь вызвать его через
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:id="@+id/data_one"
android:layout_height="match_parent">
<include layout="@layout/data_item"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:id="@+id/data_two"
android:layout_height="match_parent">
<include layout="@layout/data_item"/>
</LinearLayout>
Однако, если я это сделаю, то все элементы в макете data_item.xml будут иметь дублированные идентификаторы. Как бы мне убедиться, что у них нет дубликатов идентификаторов, или, по крайней мере, каким-то образом их получить? Допустим, я хочу получить текст представления заголовка из компоновки лайнера data_three. Как бы я это сделал?
1 ответ
Решение
Первый вопрос, почему вы не используете ListView
вместо этого и установить значения в вашем адаптере? это лучше.
Но если вам нужно спроектировать свой макет таким образом, вы должны сначала получить ссылку от вашего LinearLayout, найти свое представление с помощью ссылки LinearLayout, как показано ниже:
LinearLayout dataOne = findViewById(R.is.data_one);
TextView dataOneTitle = dataOne.findViewById(R.id.title);