viewpager - tabs android
Android Viewpager guarda datos y vistas (1)
Con suerte, alguien me puede ayudar con un ligero problema / confusión que tengo con Viewpagers y guardando datos.
PROBLEMA:
Al desplazarme por las cuatro vistas que tengo, la primera vista tiene dos paneles giratorios, dos vistas de texto que muestran una cuerda o un elemento seleccionado. si me desplazo a la tercera página y regreso a la segunda página, los datos en la primera vista se pierden. hense necesidad de guardar los datos.
¿Esto se haría en las dos rutinas que se detallan a continuación? (lo mejor es que sería) en caso afirmativo, ¿qué tipo de comandos deben indicarse?
CÓDIGO:
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}
@Override
public Parcelable saveState() {
return null;
}
INFORMACIÓN ADICIONAL: el visor se está utilizando en
public Object instantiateItem(View collection, int position) {
}
La lista completa de métodos es la siguiente:
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void finishUpdate(View arg0) {
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}
@Override
public void startUpdate(View arg0) {
}
En lugar de guardar el estado de esas páginas, puede modificar su ViewPager para que almacene todas sus páginas en lugar de destruirlas y volver a crearlas cuando se desplace.
Entonces, por ejemplo, si tienes 4 páginas:
ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
pager.setOffscreenPageLimit(3); // the number of "off screen" pages to keep loaded each side of the current page
pager.setAdapter(new PageAdapter(context));
Ahora tus páginas se mantendrán ''vivas''
Tenga cuidado con esta técnica, sin embargo, ya que aumentará el consumo de memoria. El número que se pasa a setOffscreenPageLimit () es el número de páginas que se retendrá en cada lado de la página actual. En este caso, tenemos 4 páginas en total, por lo que el peor de los casos es cuando estamos en el extremo del conjunto de páginas: tenemos la página visible actualmente y las 3 páginas restantes están fuera de la pantalla y se mantienen así en memoria. Sin embargo, con un conjunto de datos más grande, podría significar que se guardan 7 páginas en la memoria (página actual más 3 en cada lado).
En general, la solución más óptima sería lidiar adecuadamente con la descarga y recarga del estado de la página y volver a procesarlos.
Espero que esto ayude