※追記
ごめんなさい!吹けません!ってことで、嘘ついてたので訂正とお詫びをしておく。
ListViewは一画面に複数持てました。間違ったこと書いてすみません。
Android ListViewを一画面に複数配置する
なんか良い方法も浮かばず見つからず、inflateとaddViewを繰り返すことにした。
LinearLayout main = (LinearLayout) findViewById(R.id.main);
for (int i = 0; i < 3; i++) {
LinearLayout header = (LinearLayout) View.inflate(this, R.layout.header, null);
TextView headerText = (TextView) header.findViewById(R.id.header);
headerText.setText("見出し" + i);
for (int j = 0; j < i + 1; j++) {
TextView row = (TextView) View.inflate(this, R.layout.row, null);
row.setText("項目" + j);
header.addView(row);
}
main.addView(header);
}
サンプルのためforでやってるが実用だとここら辺にビジネスロジックが入ると思うが、とりあえずこんな感じで。header.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/header" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:padding="5dip"
android:textSize="18sp" android:background="#ff333333" />
</LinearLayout>
row.xml<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:padding="10dip" />
このサンプルではrow.xmlはTextViewだけだが、ここはViewじゃなくてLayoutにして、いろいろなViewを配置すればいいじゃん。見てくれはまだまだ悪いけど、それっぽい表示にはなったので今日はこれで良しとする。
※追記
ListView positionによってViewを変えることで同様のことができる。
本記事の方法は決して良い方法ではないかもしれないので中尉。