AdapterでListViewにデータをバインドしてみる [Android]
便利なバインディング機能
Androidアプリを開発する上で、利用頻度がかなり高いと思われるListViewですが。アダプタによるバインディングで、効率的にリストを作成することができます。
メイン画面のレイアウト
res/layout/main.xmlまずはレイアウトを定義していきましょう。メイン画面のグループレイアウトにListViewを追加します。idはlistViewとしておきましょう。
アイテムのレイアウト
res/layout/items.xml続いて、ListViewに追加するアイテムのレイアウトを定義してきます。新規のレイアウトを作成し、TextViewを二つ用意しました。それぞれにnameとwazaというidを定義しておきました。
アダプタの準備
DragonBallAdapter.java新規でSimpleAdapterを継承したDragonBallAdapterクラスを作成します。早速、コンストラクタで初期データをバインドしています。では、SimpleAdapterのコンストラクタに渡すパラメータを見ていきましょう。
第二引数は、実際にバインドするデータです。List<? extends Map<String, ?>>で指定しますが、やや処理が込み入っているため、メソッドで外出しにしています。戻り値のListが、メイン画面のListView。中身のMapがアイテムのTextViewに紐付いているイメージです。
第三引数は、バインド対象のレイアウトを指定します。先ほど作成したアイテムのレイアウトのid、R.layout.itemsを指定します。
第四引数は、第二引数でバインドしたMapのキーを指定します。そして第五引数でアイテムのTextViewのidと紐付けていきます。
アダプタを呼出してデータをバインド
MainFragment.javaトップ画面のフラグメントを作成します。ListViewを取得し、setAdapterメソッドでアダプタを渡してデータをバインドします。あとは以前、紹介した方法でアクティビティと紐付けおきます。
アプリを起動
エミュレータを起動すると、アダプタで初期登録したデータがリストビューで表示されています。