たまにリストにするような不定数ではないけど、同じようなView構成が続く画面レイアウトがあります。例えばこんなやつ
こんなときはまず繰り返す部分のみのxmlファイルを作ります。
child.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id= "@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text= "Title"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="名前:"/>
<EditText
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性別:"/>
<EditText
android:id="@+id/gender"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight= "1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" 年齢:"/>
<EditText
android:id="@+id/age"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight= "1"/>
</LinearLayout>
</LinearLayout>
そしてそのxmlをincludeして画面を作ります。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<include layout="@layout/child" android:id="@+id/menber1"/>
<include layout="@layout/child" android:id="@+id/menber2"/>
<include layout="@layout/child" android:id="@+id/menber3"/>
</LinearLayout>
各includeに同名のidのViewが出来るので、アクセスする場合には必ず親を指定してからアクセスします。
((TextView)findViewById(R.id.menber1).findViewById(R.id.title)).setText("班長");
((TextView)findViewById(R.id.menber2).findViewById(R.id.title)).setText("メンバーA");
((TextView)findViewById(R.id.menber3).findViewById(R.id.title)).setText("メンバーB");
こういう変化しない内容はxmlに書きたいところですが、残念ながらinclude内のViewにはコードでしかアクセスできません。