Pregunta

leí un tutorial, y utiliza SqlLite y "SimpleCursorAdapter" para llenar la lista con los objetos. Este es el código de la clase particular me enseñó.

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);
    }

Sin embargo ... lo que si quiero llenarlo con datos XML? ¿Es el mismo método? Alguien me puede dar un ejemplo (en código)? gracias.

¿Fue útil?

Solución

El ejemplo utiliza una CursorAdapter porque un objeto Cursor es devuelto por el NotesDbAdapter (si recuerdo bien) método fetchAllNotes. No sé si hay una manera de pasar en XML sin procesar para crear una lista pero se puede usar pares de nombre / valor en un HashMap para crear una lista utilizando el SimplelistAdapter.

Puede analizar el código XML o JSON y y construir una tabla hash con ella y usarla para rellenar una lista. El siguiente ejemplo no utiliza XML, en realidad no lo es dinámico en absoluto, pero sí demuestra cómo armar una lista en tiempo de ejecución. Ha tomado a partir del método onCreate de una actividad que se extiende ListActivity. Los todos los valores mayúsculas son cadenas constantes estáticos definidos en la parte superior de la clase, y se utilizan como las llaves.

// -- 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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top