¿Cómo lleno un ListView (en Android) con datos XML o JSON?

He leído un tutorial, y utiliza SQLlite y "SimpleCursorAdapter" para llenar la lista de elementos. Este es el código que me enseñó el tutorial.

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 … ¿y si quiero llenarlo con datos XML? ¿Es el mismo método? ¿Puede alguien darme un ejemplo (en código)? Gracias.

El ejemplo es usar un CursorAdapter porque un objeto Cursor es devuelto por el NotesDbAdapter (si recuerdo correctamente). No sé si hay una manera de pasar en XML sin procesar para crear una lista pero usted puede utilizar pares del nombre / valor en un HashMap para crear una lista usando el SimplelistAdapter.

Puede analizar su xml y / o json y construir una tabla hash con él y usarlo para rellenar una lista. El siguiente ejemplo no utiliza xml, de hecho no es dinámico en absoluto, pero sí demuestra cómo ensamblar una lista en tiempo de ejecución. Se toma del método onCreate de una actividad que extiende ListActivity . Los valores en mayúsculas son cadenas constantes estáticas definidas en la parte superior de la clase y se utilizan como las claves.

 // -- 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 ); 
  • OnItemClickListener de spinner
  • Crear Circular y Transparente Drawable XML Android
  • Con SAX Parser, obtiene el valor de un atributo
  • Android NumberPicker: Establecer min, max, por defecto de XML
  • ¿Cómo puedo hacer un diamante ShapeDrawable?
  • Android Studio no identifica el archivo xml como archivo de diseño
  • ¿Cómo puedo obtener de forma confiable un color de un AttributeSet?
  • Xmlns: android = "http://schemas.android.com/apk/res/android" se agrega a todos mis objetos de diseño causando errores
  • ¿Cómo eliminar la barra de acción azul en Android?
  • AutoCompleteTextView fondo / color de primer plano
  • FrameLayout no se puede convertir en android.widget.AbsListView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.