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.
- Resaltar el elemento seleccionado en ListView en Android
- ¿Por qué getView devuelve objetos convertView incorrectos en SeparatedListAdapter?
- Búsqueda / filtrado ListView por varios criterios
- Android personalizado ListView repite el fondo de selección
- Java.util.concurrent.RejectedExecutionException en Async Tarea Android
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.
- Getview parámetro "convertview" no nulo en el nuevo parámetro "posición"
- Swipeleft para eliminar no funciona en la altura expandible listview
- ¿Cómo abrir un cuadro de diálogo para confirmar la eliminación cuando el usuario pulsa larga en el elemento de la lista?
- Error: No se puede resolver notifyDataSetChanged (); Androide
- Listview no actualizar en fragmento con las pestañas viewpager
- Onclicklistner no funciona en el listview de fragmentos
- Android: AbsListView.OnScrollListener SCROLL_STATE_IDLE no se llama después de SCROLL_STATE_TOUCH_SCROLL (versión 2.1)
- MVVMCross Obtener SelectedItem de un MvxBindableListView
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"));
- ¿Cómo auto desplazarse hasta Recycler ver en Android?
- Cómo cambiar el color del botón de color cuando se pulsa en Android?