Actualizar listview dinámicamente con el adaptador

Este tutorial utiliza un SimpleAdapter que funciona bien, pero necesito actualizar los arrays en el adaptador cuando se introducen nuevos datos.

¿Podrías por favor guiarme sobre cómo actualizar un ListView usando algo más que un SimpleAdapter?

Utilice un ArrayAdapter respaldado por un ArrayList. Para cambiar los datos, solo actualice los datos de la lista y llame a adapter.notifyDataSetChanged () .

Si crea su propio adaptador, hay una función abstracta notable:

public void registerDataSetObserver(DataSetObserver observer) { ... } 

Puede utilizar los observadores dados para notificar al sistema para actualizar:

 private ArrayList<DataSetObserver> observers = new ArrayList<DataSetObserver>(); public void registerDataSetObserver(DataSetObserver observer) { observers.add(observer); } public void notifyDataSetChanged(){ for (DataSetObserver observer: observers) { observer.onChanged(); } } 

Aunque no estás contento hay cosas como el SimpleAdapter y ArrayAdapter y no tienes que hacer todo eso?

SimpleListAdapter's se utilizan principalmente para datos estáticos! Si desea manejar datos dinámicos, es mejor que trabaje con un ArrayAdapter , ListAdapter o con un CursorAdapter si sus datos vienen de la base de datos.

Aquí hay un útil tutorial para entender los datos de enlace en un ListAdapter

Tal como se hace referencia en esta pregunta de SO

La mayoría de las personas recomiendan usar notifyDataSetChanged() , pero he encontrado este enlace bastante útil. De hecho, utilizando clear y add puede lograr el mismo objetivo utilizando menos huella de memoria, y más app responsibe.

Por ejemplo:

 notesListAdapter.clear(); notes = new ArrayList<Note>(); notesListAdapter.add(todayNote); if (birthdayNote != null) notesListAdapter.add(birthdayNote); /* no need to refresh, let the adaptor do its job */ 
  • Depuración de SimpleCursorAdapter
  • Cómo cambiar el margen de diseño de un ListView de Android mediante programación
  • Enumerar actividad con encabezado, pie de página y vacía todo visible
  • Android: Actualizar ListView después de que Thread carga los datos desde la red
  • Android - FirebaseListAdapter en orden inverso?
  • Implementar desplazamiento sin fin en ListView
  • Ejemplo complejo de ListView getItemViewType ()
  • Android: wrap_content no funciona con ListView
  • ¿Cómo puedo retrasar la carga de vistas en mi adaptador de lista mientras el usuario se desplaza rápidamente
  • ¿Por qué (ListView) findViewById devuelve nulo?
  • ¿Cómo implementar arrastrar y soltar entre listas en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.