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?
- Android listview mostrar todos los elementos disponibles sin desplazamiento con el encabezado estático
- Cómo mantener la posición de la barra de desplazamiento en android listview?
- Cómo ocultar la línea horizontal en la parte inferior de cada elemento en android listview?
- ¿Cómo establecer la posición fija para el botón de acción flotante por encima de listview muy larga en android?
- ¿Cómo funciona getItem () en un arrayAdapter?
- Agregar o quitar encabezado y pie de página dinámicamente
- ¿Puedo insertar una columna en listview en tiempo de ejecución?
- ¿Cómo puedo hacer que mis filas listview tengan diferentes alturas
- Slide ListView Item en Android como la aplicación iPhone Mail
- Carpeta Java de Java FALLA LA TRANSACCIÓN DE LA CARPETA
- Implementación de 47degree android-swipelistview para desplazar android ListViewItem
- Error con mi lista, ScrollView y botones
- OnItemCLickListener no funciona en 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