我知道我可以使用包含/合并将 XML 文件包含在另一个 XML 文件中。如果包含的布局包含子布局,并且您在根视图中包含了几个 this 的实例,您如何找到每个子实例的 ID?
例如,如果包含的布局包含一个列表视图,并且您在根布局中包含此布局的 3 个实例,您如何找到并引用 3 个列表视图子项?
更新:对于阅读此线程的人:实际上我发现了一个更好的解决方案,回想起来它非常明显。getChildAt() 的问题在于,如果您添加新视图或重新安排内容,此代码将崩溃或无法工作,因为子项的索引已更改,并且类类型甚至可能不再匹配。所以不是很可维护。事实证明,如果您只是深入到布局中并且为每个包含项提供一个 ID,则 findViewById() 可以正常工作。例如,假设您在布局中有 3 个包含,ID 名称分别为“list_container1”、“list_container2”和“list_container3”。其中每一个都包含具有相同 ID 名称的相同列表视图 XML。现在不要试图从根布局中找到你的列表,这不起作用,
myRootLayout = (LinearLayout) findViewById(R.id.root_layout);
container1 = (LinearLayout) myRootLayout.findViewById(R.id.list_container1);
list1 = (ListView) container1.findViewById(R.id.my_list_view);
container2 = (LinearLayout) myRootLayout.findViewById(R.id.list_container2);
list2 = (ListView) container2.findViewById(R.id.my_list_view);
container3 = (LinearLayout) myRootLayout.findViewById(R.id.list_container3);
list3 = (ListView) container3.findViewById(R.id.my_list_view);
在上面的示例中,布局层次结构是这样的(并且可以进一步简化):
LinearLayout
<include>
LinearLayout
ListView
<include>
LinearLayout
ListView
<include>
LinearLayout
ListView