2011-12-23 13 views
12

¿Cómo puedo mantener la posición de desplazamiento de un GridView (está lleno de resultados de búsqueda) a lo largo de una reorientación de pantalla?Mantener la posición de desplazamiento de GridView a través de la rotación de pantalla

Tengo GridView dentro de un Fragmento, y cuando giro la pantalla, vuelve al principio de la lista.

Para hacerlo aún más complicado, en modo horizontal, mi GridView tiene 3 columnas ... en modo vertical tiene 2 columnas.

Parece que no puedo entender cómo mantener GridView del fragmento desplazado a cualquier lugar cerca de donde debería estar cuando cambia la orientación de la pantalla.

Respuesta

18

Puede probar esto:

Inicialmente, usted tiene que conseguir la posición de desplazamiento actual del GridView llamando:

int index = gridview.getFirstVisiblePosition(); 

entonces usted tiene que guardar este valor, mientras que los cambios de orientación y cuando el GridView es creado de nuevo, tiene que mover su vista de cuadrícula a este índice.

supongo que esto podría funcionar:

gridview.smoothScrollToPosition(int index) 

Espero que esto ayude!

+6

vi eso, pero necesito para respaldar de nuevo a 2.1 y por lo tanto no tengo acceso a smoothScrollToPosition(). Estoy usando setSelection (int position) en su lugar. getFirstVisiblePosition() es exactamente lo que necesitaba. ¡Ahora me siento tonto! ¡Gracias! –

+0

¡No hay problema, amigo! Me alegro de que te haya ayudado! :) –

+4

En mi aplicación, smoothScrollToPosition no funciona. Pero setSelection funciona bien. – ChangUZ

24

Puede usar el siguiente método, funcionará para todas las versiones de Android.

Para guardar la posición de desplazamiento actual:

int index = gridView.getFirstVisiblePosition(); 

Luego, después de un cambio de orientación, utilice el siguiente código para establecer la posición GridView para el índice de guardado:

gridView.setSelection(index); 
+4

esto funcionó !!!! gridview.smoothScrollToPosition (int index) ---> no funcionará cuando haya una carga diferida. – krisDrOid

+0

Lo mismo @krisDrOid – ChangUZ

+0

Eso funciona, ¡gracias amigo! –

Cuestiones relacionadas