从布局中获取具有重复 ID 的视图
Getting a View with a duplicate id from a layout
我要显示以下五次
<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 布局中的所有项目都将具有重复的 ID。我将如何确保它们没有重复的 ID,或者至少以某种方式检索它们?假设我想从 data_three 内衬布局中获取标题视图文本。我该怎么做?
第一个问题是为什么不使用 ListView
而是在适配器中设置值?这个更好。
但是如果你必须以这种方式设计你的布局,你必须首先从你的 LinearLayout 中获取引用,然后使用 LinearLayout 引用找到你的视图,如下所示:
LinearLayout dataOne = findViewById(R.is.data_one);
TextView dataOneTitle = dataOne.findViewById(R.id.title);
我要显示以下五次
<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 布局中的所有项目都将具有重复的 ID。我将如何确保它们没有重复的 ID,或者至少以某种方式检索它们?假设我想从 data_three 内衬布局中获取标题视图文本。我该怎么做?
第一个问题是为什么不使用 ListView
而是在适配器中设置值?这个更好。
但是如果你必须以这种方式设计你的布局,你必须首先从你的 LinearLayout 中获取引用,然后使用 LinearLayout 引用找到你的视图,如下所示:
LinearLayout dataOne = findViewById(R.is.data_one);
TextView dataOneTitle = dataOne.findViewById(R.id.title);