parent.xmlにchild.xmlを複数回includeした場合、同じidのViewが複数できるがそれらへの参照をどうやって取得するか。例は以下。
parent.xml
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <include android:id="@+id/child1_id" layout="@layout/child"/> <include android:id="@+id/child2_id" layout="@layout/child"/> </LinearLayout> </ScrollView>
child.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/left_text_view" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_gravity="center|right" android:gravity="right"/> <TextView android:id="@+id/right_text_view" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_gravity="center|right" android:gravity="left"/> </LinearLayout>
以下のようにfindViewByIdを二回呼べばいい。
View view1 = findViewById(R.id.child1_id).findViewById(R.id.left_text_view); View view2 = findViewById(R.id.child2_id).findViewById(R.id.left_text_view);
参考: