2011/07/04

ListViewやSpinnerを使ってみる1

今回はListViewやSpinnerに表示する項目にデータを渡すAdapterに関する記事です。

AndroidでListViewやSpinnerを利用するには標準でSimpleAdapterやArrayAdapter(他にもCursorAdapter等)が用意されています。そしてこれらAdapterはBaseAdapterというものを継承して作成されています。

とりあえずはSimpleAdapterとArrayAdapterについて簡単に解説します。

まずSimpleAdapterとArrayAdapterについて違う部分を先に説明すると、前者は渡すデータがMap<String, ?>で後者がStringやCharSequenceになります。また前者は渡した後のデータをAdapter内で変更することが出来ませんが、後者は足したり引いたりソートしたり出来ます。



まずはSimpleAdapterについて
SimpleAdapterのコンストラクターでは
  • 内包するMapデータ
  • ListViewで表示するレイアウトxml
  • Mapデータのキーと対応するレイアウトのID
を渡す必要があります。

表示できる内容はTextView、CheckedTextView、ImageView、CheckBox?
ImageViewに表示できる内容はリソースIDを渡せる画像のみです。
私自身はこの記事を書いている時点でアプリにSimpleAdapterを利用したことがありません。

そんな私が作ったSimpleAdapterのサンプルコードです。
レイアウトXML(simpleadapter_layout1.xml)





次にArrayAdapterの簡単な使い方です。
ArrayAdapterでは基本的に1つのTextView(CheckedTextView)だけを表示することが出来ます。
コンストラクターは
  • 内包するテキストデータ
  • ListViewで表示するレイアウトxml
  • レイアウトxml上のTextViewのID
を渡す必要があります。
私自身はこの記事を書いている時点でアプリにArrayAdapterを利用したことがありません。

レイアウトxml(arrayadapter_layout1.xml)





おまけ
SimpleAdapterで内容を動的に変えてみる場合。
Adapterと同期するData(SimpleAdapterの場合はList<Map>)を別に管理することで、中身の追加・削除が容易に行えます。

(レイアウトxmlは上のSimpleAdapter例と同じ)



ListViewは覚えてしまえば非常に簡単で使いやすいと思います。
次回は適度にSpinnerについて。