【Android開発】ListViewの動的実装:ArrayAdapterを用いたデータバインディング
Android開発におけるUIコンポーネントの基本として、ListViewは古くから垂直方向のリスト表示に用いられてきました。このListViewを活用しデータを動的に生成・更新する方法を書き留めておきます。特に、Adapterパターンを用いたデータとビューの連携と、データ変更を即座に反映させるためのnotifyDataSetChanged()を用います。
import文
import java.util.ArrayList; import android.widget.ListView; import android.widget.ArrayAdapter;
インスタンス変数
private ArrayAdapter<String> adapter; private ArrayList<String> dataList;
実装
// データリストの準備
dataList = new ArrayList<String>();
dataList.add("初期アイテム 1\n 改行すると2行になる");
ListView listView = findViewById(R.id.my_list_view);
// ArrayAdapterの作成
// パラメータ:
// - Context (this)
// - リスト項目のレイアウトID (Android標準のシンプルなテキストレイアウトを使用)
// - データリスト
adapter = new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1, // 標準で用意されているTextViewのみのレイアウト
dataList
);
// AdapterをListViewに設定
listView.setAdapter(adapter);
// データリストに新しいデータを追加(動的に追加されるかチェック)
dataList.add("初期アイテム 2\n 2行目");
// Adapterにデータが変更されたことを通知
adapter.notifyDataSetChanged();
実行結果
結果はこんな感じです(AVD実行画面)。
スポンサーリンク
