Android: NotifyDataSetChanged, actualizar un ListView

Este es un problema que en su momento me trajo muchos dolores de cabeza, y es que llamar al método “setAdapter” de un elemento “ListView” no siempre funciona, ni siquiera cuando creas un adaptador nuevo para esta lista.

Hay que tener claro dos conceptos, el primero es que el método “setAdapter” solo se debe llamar dentro del método “onCreate” de nuestra activity, y el segundo que para actualizar una lista fuera del “onCreate” debemos recurrir al método “notifyDataSetChanged” del adaptador. Por lo tanto siempre que el “ListView” ya este cargado y haya que actualizar sus ítems podemos recurrir al método “clear” del adaptador para vaciarlo, después cargarlo con los nuevos datos, y finalmente llamar a “notifyDataSetChanged” para informar al dispositivo de que debe refrescar el adaptador porque se han modificado datos. También es posible instanciar un nuevo adaptador en vez de limpiar con el método “clear”.

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_layout1);

   //...código

   lista.setAdapter(adaptador);

   //...código

   //Limpiamos los ítems del adaptador
   adaptador.clear();

   //Cargamos el adaptador con nuevos datos...

   //Refrescamos el adaptador
   adaptador.notifyDataSetChanged();
}
Anuncios

2 comentarios en “Android: NotifyDataSetChanged, actualizar un ListView

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s