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?
- ¿Cómo agregar AdMob como elemento de ListView en Android?
- El ListView de fondo se vuelve negro al desplazarse
- ListView: ¿Cómo permanecer resaltado / seleccionado después de pulsar el botón Atrás?
- BaseAdapter que hace que ListView salga de orden cuando se desplaza
- Slide ListView Item en Android como la aplicación iPhone Mail
- Cómo expandir una fila de la lista cuando la toquemos en listview
- Ancho y color del borde del elemento ListView de Android
- Cómo actualizar la lista con el adaptador Cursor
- ListView cambia el elemento entre marcado y desmarcado - Android
- Mostrar la vista vacía cuando ListView está vacío
- Android: Desactivar la carga perezosa de listview
- Cómo diseñar Gridview como aplicación guardian
- Cómo determinar si una vista es visible en un ListView?
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 */
- Llavero Android para las credenciales de usuario
- Cómo obtener fragmentos existentes cuando se utiliza FragmentPagerAdapter