[Android] ArrayAdapter を使ってレイアウトをアレンジする

手っ取り早くテキストだけの単純なリスト表示をしたところで、タイトルが欲しいのでヘッダーを追加したり、あるいは広告をフッターに貼りたいというよう要求が出てきます。
 

    ArrayAdapter

  1. ListView と ArrayAdapter 簡単なテキストリストの表示
  2. ArrayAdapterを使ってレイアウトをアレンジ
  3. ListActivity と ArrayAdapterで画像とテキストをリスト表示
    Basedapter

  1. BaseAdapterで画像とテキストをリスト表示
  2. ListViewリストをタップして画面遷移
  3. ListViewアイテムの移動、削除
  4. ListView アイテム個々の背景、高さなどを変える


 

Android Studio 2.3.3
Android 7.1.1

 


ArrayAdapter

 
「1. ListView と ArrayAdapter 簡単なテキストリストの表示」の続きです。
 

Header & Footer

 
ヘッダーやフッターをListViewに追加するメソッド addHeaderView addFooterView があります。ただこれはちょっと期待したものと少し違うと(個人的に)思いましたので、汎用的作ってみました。作り方はいろいろあるとは思います。
 
レイアウトとしてRelativeLayoutを使いヘッダーはListViewとまとめてLinearLayoutに入れる。フッターとしてのボタンはBottomに張り付ける形です。
 
activity_main.xml

 
ListViewの中は、TextViewで設定します。

list.xml

 
このようにすれば、ListViewをレイアウトのViewの一部として扱えて便利になります。ただ最後のitemが見えなくなる可能性があります。空itemを使うなどの対応で解消できます。
 

item の add()

 
ArrayAdapterにitemを追加するにはadd()を使います。また、リスト表示しているitemを削除する場合はremove()です。insert()で挿入することもできます。
 

setOnItemClickListener

 
ここでは、add()を使って配列からitemを追加してリストを作り、itemをクリックするとその要素をToastで表示するようにしてみました。
 

 
まとめると

MainActivity.java

 
arrayadapter_2
 
Listのitemをダイナミックに追加したり削除したりはArrayListを使う方法 ListViewアイテムの移動、削除 で説明しています。
このケースではadd(), remove()などは使わずにArrayListの要素自体を追加・削除しています。個人的にはこの方法がやりやすいのですが、お好みです。
 
 
References:
ListView
ArrayAdapter