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

Android7 

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

    ArrayAdapter

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

  1. BaseAdapterで画像とテキストをリスト表示
  2. ListViewリストをタップして画面遷移
  3. ListViewアイテムの移動、削除


 

Android Studio 2.2.2
Android 7.1.1

 

sponsored link

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()で挿入することもできます。

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

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

References:
ListView
ArrayAdapter