Activityの起動時に(onCreateメソッド内で)SimpleAdapterを使ってListViewに値を設定する方法は既に述べた。
参考:android.R.drawableのアイコンを一覧表示する
ListViewが表示された後で、データの内容が変更された場合における、その変更をListViewに反映させる方法は次のとおりである。
この例では、任意のレコードに表示されている文字列を、別の文字列に変更する。
public class SimpleAdapterActivity extends ListActivity {
SimpleAdapter sa;
ArrayList<Map<String, Object>> data;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int i;
String sFrom[] = {"Image", "String"};
int iTo[] = new int[] {R.id.Image, R.id.Text};
data =new ArrayList<Map<String, Object>>();
for(i=0; i<IconRawData.length; i++){
Map<String, Object> m = new HashMap<String, Object>();
m.put("Image", IconRawData[i++]);
m.put("String", IconRawData[i]);
data.add(m);
}
sa = new SimpleAdapter(this, data, R.layout.child, sFrom, iTo);
setListAdapter(sa);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Map<String, Object> m;
m = data.get(position);//クリックした位置にあるレコードを取得する。
m.put("String", "This data has been modified.");//文字列を書き変える。
data.set(position, m);//レコード内のデータを変更する。
sa.notifyDataSetChanged();//変更を画面に反映させる。
}
public Object IconRawData[] = {
android.R.drawable.ic_btn_speak_now,
"ic_btn_speak_now",
android.R.drawable.ic_delete,
"ic_delete",
android.R.drawable.ic_dialog_alert,
"ic_dialog_alert",
android.R.drawable.ic_dialog_dialer,
"ic_dialog_dialer",
(以下省略)