actualice listview dinámicamente con adaptador

Este tutorial usa un Adaptador Simple que funciona bien, pero necesito actualizar las matrices en el adaptador cuando se ingresan nuevos datos.

¿Podrías guiarme sobre cómo actualizar un ListView usando algo que no sea un SimpleAdapter?

Use un ArrayAdapter respaldado por una ArrayList. Para cambiar los datos, simplemente actualice los datos en la lista y llame a adapter.notifyDataSetChanged () .

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

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

Puede usar los observadores dados para notificar al sistema que se actualice:

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

¿Aunque no te alegra que haya cosas como el Adaptador simple y el Adaptador de matriz y no tienes que hacer todo eso?

¡SimpleListAdapter’s se usa principalmente para datos estáticos! Si desea manejar datos dynamics, es mejor que trabaje con un ArrayAdapter , ListAdapter o con un CursorAdapter si sus datos provienen de la base de datos.

Aquí hay un tutorial útil para comprender los datos vinculantes en un ListAdapter

Como se menciona en esta pregunta SO

La mayoría de las personas recomiendan utilizar notifyDataSetChanged() , pero este enlace me pareció bastante útil. De hecho, al usar clear y add puede lograr el mismo objective utilizando menos espacio de memoria y más aplicación responsibe.

Por ejemplo:

 notesListAdapter.clear(); notes = new ArrayList(); notesListAdapter.add(todayNote); if (birthdayNote != null) notesListAdapter.add(birthdayNote); /* no need to refresh, let the adaptor do its job */