[Android] 固定ヘッダー・フッター付きの ListView を作成する
ListView の上下に固定の View を作成したい場合があります。固定の View に広告ネットワークを載せる時とかですね。この固定の View は、ListView 内をスクロールしても位置が固定されるものを想定しています。
他のブログ記事にも実装方法は載っているのですが、xml で記述する方法しかなかったので、全部 .java ファイルに記述する方法(Programatically)をこの記事では紹介します。
固定ヘッダー・フッター付きの ListView
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 全体
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT)
);
linearLayout.setOrientation(LinearLayout.VERTICAL);
// ヘッダー部分
LinearLayout adViewLayout = new LinearLayout(this);
adViewLayout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT)
);
adViewLayout.setBackgroundColor(Color.BLACK);
adViewLayout.setGravity(Gravity.CENTER_HORIZONTAL);
Button button = new Button(this);
button.setText("広告");
adViewLayout.addView(button);
// ListView
String[] array = {"北海道", "青森県", "岩手県", "宮城県", "秋田県", "山形県", "福島県", "茨城県", "栃木県", "群馬県", "埼玉県", "千葉県", "東京都", "神奈川県", "新潟県", "富山県", "石川県", "福井県", "山梨県", "長野県", "岐阜県", "静岡県", "愛知県", "三重県", "滋賀県", "京都府", "大阪府", "兵庫県", "奈良県", "和歌山県", "鳥取県", "島根県", "岡山県", "広島県", "山口県", "徳島県", "香川県", "愛媛県", "高知県", "福岡県", "佐賀県", "長崎県", "熊本県", "大分県", "宮崎県", "鹿児島県", "沖縄県"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array);
ListView listView = new ListView(this);
listView.setAdapter(adapter); // リストビューにアダプタを設定
listView.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT,
1.f)
);
linearLayout.addView(adViewLayout);
linearLayout.addView(listView);
setContentView(linearLayout);
}
}
最後の linearLayout.addView(adViewLayout) と linearLayout.addView(listView) の位置を入れ替えることで、ヘッダーもしくはフッターが固定されます。