В примере используется CursorAdapter
, поскольку объект Cursor
возвращается методом NotesDbAdapter
(если я правильно помню) fetchAllNotes
. Я не знаю, есть ли способ передать в необработанном XML для создания списка, но вы можете использовать пары имя / значение в HashMap
для создания списка с помощью SimplelistAdapter.
Вы можете проанализировать ваш xml и / или json, построить с ним хеш-таблицу и использовать ее для заполнения списка. Следующий пример не использует xml, фактически он вообще не динамический, но демонстрирует, как собрать список во время выполнения. Он взят из onCreate
метода действия, которое распространяется на ListActivity
. Все заглавные значения являются статическими константными строками, определенными в верхней части класса, и используются в качестве ключей.
// -- 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 );