Pergunta

Eu li um tutorial, e ele usa SqlLite e "SimpleCursorAdapter" para preencher a lista com os itens. Este é o código do tutorial me ensinou.

private void fillData() {
        // Get all of the notes from the database and create the item list
        Cursor c = mDbHelper.fetchAllNotes();
        startManagingCursor(c);

        String[] from = new String[] { NotesDbAdapter.KEY_TITLE };
        int[] to = new int[] { R.id.text1 };

        // Now create an array adapter and set it to display using our row
        SimpleCursorAdapter notes =
            new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);
        setListAdapter(notes);
    }

No entanto ... o que se eu quiser preenchê-lo com dados XML? É o mesmo método? Alguém pode me dar um exemplo (em código)? obrigado.

Foi útil?

Solução

O exemplo está usando uma CursorAdapter porque um objeto Cursor é devolvido pelo NotesDbAdapter (se bem me lembro) Método fetchAllNotes. Eu não sei se existe uma maneira de passar em XML bruto para criar uma lista, mas você pode usar pares nome / valor em um HashMap para criar uma lista usando o SimplelistAdapter.

Você pode analisar o xml e ou JSON e construir uma tabela hash com ele e usá-lo para preencher uma lista. O exemplo a seguir não usa xml, na verdade não é dinâmico em tudo, mas não demonstrar como montar uma lista em tempo de execução. É feita a partir do método onCreate de uma actividade que se estende ListActivity. As todos os valores em maiúsculas são strings constantes estáticos definidos no topo da classe, e são utilizados como chaves.

// -- 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 );
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top