非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【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実行画面)。

 

スポンサーリンク

 - Androidプログラミング