2012-05-20 15 views

Respuesta

39

Bueno, sí, hay.

ListView.invalidateViews() se usa para indicar al ListView que invalide todas las vistas secundarias de elementos (volver a dibujarlas). Tenga en cuenta que no es necesario que haya un número igual de vistas que elementos. Eso se debe a que ListView recicla sus vistas de elementos y las mueve alrededor de la pantalla de forma inteligente mientras se desplaza.

Adapter.notifyDataSetChanged() por otro lado, es decirle al observador del adaptador que el contenido de lo que se está adaptando ha cambiado. Notificar al conjunto de datos cambiado hará que la vista de lista para invocar sus métodos adaptadores de nuevo para ajustar las barras de desplazamiento, regenerar las vistas de elementos, etc ...

mayoría de las veces que se desea utilizar en lugar de notifyDataSetChangedinvalidateViews, pero desde luego depende de lo estás tratando de lograr.

+0

No estoy muy confundido cuando dice _Nota que no es necesario que haya una cantidad igual de vistas que elementos_. ¿Cuál es la diferencia entre vistas y elementos? –

+2

@black crow: una vista de lista no crea una vista por artículo. En su lugar, generalmente solo tiene el número de vistas que cabrían en la pantalla más uno, y las mueve a medida que se desplaza. En palabras simples: no crea vistas para elementos que no son visibles. –

+2

Tiene espacio para 10 vistas en la pantalla y tiene 20 en su adaptador ... por lo que tiene 10 vistas y 20 elementos. – Barak

Cuestiones relacionadas