Получение вида с дублированным идентификатором из макета

Я хотел бы отобразить следующие пять раз

<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);
Другие вопросы по тегам