ordenar - metodos de listview android
actualice listview dinĂ¡micamente con adaptador (4)
¡SimpleListAdapter''s se usa 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 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
This 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?
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 objetivo utilizando menos espacio de memoria y más aplicación 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 */
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<DataSetObserver> observers = new ArrayList<DataSetObserver>();
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?
Use un ArrayAdapter respaldado por una ArrayList. Para cambiar los datos, simplemente actualice los datos en la lista y llame a adapter.notifyDataSetChanged() .