Das Beispiel verwendet eine CursorAdapter
, weil ein Cursor
Objekt von der NotesDbAdapter
zurückgegeben wird (wenn ich mich richtig erinnere) fetchAllNotes
Methode. Ich weiß nicht, ob es eine Möglichkeit gibt, Roh-XML zu übergeben, um eine Liste zu erstellen, aber Sie können Name/Wert-Paare in einer HashMap
verwenden, um eine Liste mit dem SimpleListAdapter zu erstellen.
Sie können Ihre XML und/oder JSON analysieren und eine Hashtabelle damit erstellen und diese verwenden, um eine Liste aufzufüllen. Das folgende Beispiel verwendet kein XML, es ist überhaupt nicht dynamisch, zeigt aber, wie eine Liste zur Laufzeit zusammengestellt wird. Es stammt aus der onCreate
Methode einer Aktivität, die ListActivity
erstreckt. Die Werte für alle Großbuchstaben sind statische Konstanten, die am Anfang der Klasse definiert sind und als Schlüssel verwendet werden.
// -- container for all of our list items
List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
// -- list item hash re-used
Map<String, String> group;
// -- create record
group = new HashMap<String, String>();
group.put(KEY_LABEL, getString(R.string.option_create));
group.put(KEY_HELP, getString(R.string.option_create_help));
group.put(KEY_ACTION, ACTION_CREATE_RECORD);
groupData.add(group);
// -- geo locate
group = new HashMap<String, String>();
group.put(KEY_LABEL, getString(R.string.option_geo_locate));
group.put(KEY_HELP, getString(R.string.option_geo_locate_help))
group.put(KEY_ACTION, ACTION_GEO_LOCATE);
groupData.add(group);
// -- take photo
group = new HashMap<String, String>();
group.put(KEY_LABEL, getString(R.string.option_take_photo));
group.put(KEY_HELP, getString(R.string.option_take_photo_help));
group.put(KEY_ACTION, ACTION_TAKE_PHOTO);
groupData.add(group);
// -- create an adapter, takes care of binding hash objects in our list to actual row views
SimpleAdapter adapter = new SimpleAdapter(this, groupData, android.R.layout.simple_list_item_2,
new String[] { KEY_LABEL, KEY_HELP },
new int[]{ android.R.id.text1, android.R.id.text2 });
setListAdapter(adapter);