複雑なレイアウトのListViewを作るには
- SimpleAdapterを使うとArrayAdapterでは難しい複雑なデータをListViewにヒモつけることが可能です。
リストビューのそれぞれの行が複数の項目を持っている場合には、この方法を使用することにより自由なレイアウトで表示できます。
- 表示用のレイアウトは別途xmlファイルで構成します[例:layout_row.xml]
- SimpleAdapterへのデータのヒモ付けはHashMap型のArrayListを使います。
package com.efolab;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class Main extends Activity {
Called when the activity is first created.
Context context;
ListView lv;
ArrayList<HashMap<String,String>> collection = new ArrayList<HashMap<String,String>>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TODO
context = getApplicationContext();
lv = new ListView(context);
setContentView(lv);
lv.setBackgroundColor(Color.BLACK);
String mString[] = { "aaa", "abc", "bbb", "ccc","hoge","moeno","souichiro","yukiko","ore","hahah","hene" };
for(int i=0;i<mString.length;i++){
HashMap<String,String> map = new HashMap<String,String>();
map.put("no", ""+i);
map.put("name", mString[i]);
collection.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(context, collection, R.layout.layout_row, new String[]{"no","name"}, new int[]{R.id.textView1,R.id.textView2});
lv.setAdapter(adapter);
}
}
res/layout/layout_row.xml
xml version="1.0" encoding="utf-8"
<LinearLayout xmlnsandroid="http://schemas.android.com/apk/res/android"
androidlayout_width="match_parent"
androidlayout_height="match_parent"
androidorientation="vertical" >
<TextView
androidid="@+id/textView1"
androidlayout_width="wrap_content"
androidlayout_height="wrap_content"
androidtext="TextView" />
<TextView
androidid="@+id/textView2"
androidlayout_width="217dp"
androidlayout_height="wrap_content"
androidtext="TextView"
androidtextSize="12dp" />
</LinearLayout>