2011-01-10 17 views
5

Amigos,cómo mantener la posición de la barra de desplazamiento en la vista de lista de Android?

Estoy mostrando una matriz en ListView.

puedo cambiar los datos de gama dinámica en el botón de clic y llamar

adapter.notifyDataSetInvalidated(); 

No mantiene la posición de la barra de desplazamiento lista. (la longitud de la fuente de datos a la lista es siempre la misma). ¿Podría alguien guiarme a cómo mantener el último estado de ListView?

Cualquier ayuda sería apreciada.

Respuesta

10

Prueba esto:

//Get the top position from the first visible element 
int idx = list.getFirstVisiblePosition(); 
View vfirst = list.getChildAt(0); 
int pos = 0; 
if (vfirst != null) pos = vfirst.getTop(); 

//Restore the position 
list.setSelectionFromTop(idx, pos); 
+0

por favor, corrija el código o no es comprensible ¿qué es v aquí? es como si (vfirst! = null) – UMAR

+0

código corregido. Déjame saber –

+2

pequeño error en el código: 'v.getTop()' debe ser 'vfirst.getTop()' – BenjaminButton

3

Si sólo desea actualizar algunos cambios en los datos, utilice

notifyDataSetChanged(); 

lugar. Y scroll estará en la misma posición.

Cuestiones relacionadas