2つの文字列(AAA#,BBB#)のセットが複数あるときに、これをリストで表示する
AAA1 BBB1
AAA2 BBB2
AAA3 BBB3
リストで表示する
リストビューをつかう
<ListView />
デフォルトで設定したアイテムを使う
レイアウトxml
<ListView
android:entry="@array/lvArray">
strings.xml
<string-array name="lvArray">
<item>AAA1</item>
<item>AAA2</item>
<item>AAA3</item>
</string-array>
動的にアイテムをセットする
マップMapのリストでアイテムの情報を作る。
List<Map<String, String>> listMap = new ArrayList<Map<String, String>>();
Map<String, String> map = new Map<String, String>();
map.put("AAA","AAA1");
map.put("BBB","BBB1");
listMap.add(map);
データ元と表示先を結びつける情報(配列)を準備する
String[] from = {"AAA","BBB"}
int[] to = {android.R.id.text1, android.R.id.text2};
Androidで提供されているリストビュー(android.R.layout.simple_list_item_2)を使う場合。AAA->text1, BBB->text2 を結びつける。
SimpleAdapterを生成する
SimpleAdapter adapter = new SimpleAdapter(ThisActivity.this, listMap, android.R.layout.simple_list_item_2, from, to);
setAdapterでリストビューに表示させる
ListView lvList = (ListView)FindViewById(R.id.dataView);
lvList.setAdapter(adapter);
リストビューで独自レイアウトを設定する
行の内容のxmlレイアウトファイルを作成する
1行分のレイアウトを記述。この「1行分」をたくさん作って、ListViewにぶら下げていく。
BaseAdapterを継承したクラスを作成する
- getCount
- getItem
- getItemId
- getView
getViewの実装
イメージとしては、リストのある一行を(作成と?)表示する機能を実装する。Viewの作成には、手作業で作成する方法と、LayoutInflaterをつかって、レイアウトXMLファイルから作成する方法があるが、XMLファイルから作ったほうが簡単。
View v;
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.row, null); // rox.xml を作っていると仮定
この View(レイアウトXML)の子ビューを、findViewByIdで取得し、ここにsetText(など)で値を設定する。SimpleAdapterでは、これをすでに実装してくれている。
ListView.setAdapterを実行する
結びつけるListViewにsetAdapterを実行することで、ListViewにぶら下げられる。
最終更新:2017年04月28日 20:59