Cómo guardar y restaurar la posición de ListView en Android

Tengo tabView, mostrando lista en cada pestaña. Cuando me desplazo en una pestaña, cambiar a otra pestaña y volver a la pestaña anterior, la posición se devuelve a la parte superior en lugar de mostrar la posición desplazada anterior. ¿Cómo logro esto? Necesito saber cómo puedo usar onSaveInstanceState & onRestoreInstanceState para guardar la posición y usar la posición guardada en la visualización de la posición desplazada anterior.

Gracias por adelantado.


Gracias a todos por su respuesta. He intentado con todas las soluciones, pero se encontró con otros problemas. Básicamente el problema que estoy enfrentando es como sigue.

Tengo un listview como mi primera actividad cuando lanzo mi aplicación. Cuando hago clic en el elemento de lista, se inicia la actividad de pestaña que contiene 3 pestañas. Todas las 3 pestañas utilizan la misma actividad llamada ListActivity. Pero 3 pestañas contienen datos diferentes. Mi pregunta es cómo conservar la posición de la lista cuando cambio entre las pestañas. Con las soluciones anteriores proporcionadas, cuando cambio la posición en una lengüeta, afecta también a las lengüetas restantes. Por ejemplo, si estoy en la posición 6 en la primera pestaña, esta posición se establecerá para segunda y tercera pestaña, así como estoy usando la misma ListActivity para las 3 pestañas. No se me permite compartir el código. Así que tienes que escribir el problema de este largo. También el número de pestañas creadas son dinámicas. Puede ser 3 o 4 o 5. Pero todas las pestañas utilizan 1 ListActivity.

¿Puede alguien darme un ejemplo de cómo lograr esto. 1. ListActivity única utilizada en varias pestañas. 2. Mantener la posición del cursor en las pestañas sin después de afectar a otras pestañas.

Su solución proporcionada es apreciada. Gracias por adelantado.

No vuelva a llamar a setAdapter () en la vista de lista. Haz algo como esto.

if(myListView.getAdapter() == null) myListView.setAdapter(new myAdapter(this, R.layout.row, items)); 

Si necesita actualizar su llamada ListView notifyDataSetChanged () en el adaptador.

Para obtener la posición actual de su ListView, puede llamar al

 int position = mCatchList.getFirstVisiblePosition(); 

Luego, una vez que navegue de nuevo a la pestaña con ese ListView, puede llamar

 mCatchList.setSelection(position); 

Dependerá de cómo se escriba su código para decir si la posición tendrá que ser agregada a savedInstanceState, o sin embargo.

onSaveInstanceState para guardar la posición y vuelva a establecer la posición onRestoreInstanceState . El Bundle es como un HashMap, (pseudo-código):

En onSaveInstanceState :

 bundle.putInt("MyTabsPosition", getPosition()); 

Luego en onRestoreInstanceState :

 pseudo.setPosition(bundle.getInt("MyTabsPosition")); 
  • ListView establece la primera posición visible
  • android listview color de fila alternativo pero con selección de cursor predeterminada
  • Dar etiquetas de los elementos de la lista de visualización sin el arrayadapter personalizado
  • Cómo rellenar un listview asincrónicamente?
  • Cómo obtener datos de adaptador personalizado en ListView?
  • ¿Cambiar el estado del CheckBox en el elemento de lista?
  • Selector de lista de Android 4.0 + en el elemento de clic largo - Necesidad de ser persistente - No funciona
  • El botón de acción flotante no funciona sobre ListView
  • Android ListView onTouchEvent no siempre da ACTION_DOWN
  • Android cómo hacer que resalte la vista cuando se hace clic?
  • Cómo actualizar la lista expandible cuando se agrega un elemento nuevo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.