include/merge を使用して、XML ファイルを別の XML ファイルに含めることができることを知っています。含まれているレイアウトに子が含まれていて、ルート ビューにこのインスタンスをいくつか含める場合、各子インスタンスの 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