Quiero implementar una lista de ViewPagers. Cada elemento de un ListView es ViewPager. Esto funciona hasta ahora. Mi problema es que no puedo mantener el estado de ViewPager. Por ejemplo: cuando cambio la página del primer ViewPager en la lista, me desplazo hacia abajo hasta que el primer ViewPager ya no esté visible y luego me muevo hacia arriba otra vez, el primer ViewPager muestra su primera página nuevamente.¿Cómo mantener el estado de ViewPager en un ListView?
Escribí dos adaptadores, uno para ListView y otro para ViewPager. Estoy tratando de reciclar la vista del parámetro convertView del método getView en el ListAdapter. No estoy seguro de si lo estoy haciendo bien y no tengo idea de cómo hacerlo en ViewPagerAdapter.
¿Alguna idea?
aquí es mi código hasta ahora:
getView de MyListAdapter:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mRowView = inflater.inflate(R.layout.listitem, parent, false);
}else{
mRowView=convertView;
}
switch(position){
case 0://Fussball
ViewPagerAdapter fussballAdapter = new ViewPagerAdapter(mContext,"Fussball");
ViewPager fussballPager = (ViewPager) mRowView.findViewById(R.id.viewpager1);
fussballPager.setAdapter(fussballAdapter);
break;
case 1://Handball
ViewPagerAdapter handballAdapter = new ViewPagerAdapter(mContext,"Handball");
ViewPager handballPager = (ViewPager) mRowView.findViewById(R.id.viewpager1);
handballPager.setAdapter(handballAdapter);
break;
//.../
default:
//Do nothing
}
return mRowView;
}
instantiateItem de ViewPagerAdapter:
@Override
public Object instantiateItem(View pager, int position) {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
switch(position){
case 0:
oneLayout=inflater.inflate(R.layout.table_layout, null);
break;
case 1:
oneLayout=inflater.inflate(R.layout.table_layout_second, null);
break;
default:
oneLayout=inflater.inflate(R.layout.table_layout, null);
break;
}
((ViewPager)pager).addView(oneLayout, 0);
return oneLayout;
}
Gracias! :)
necesita encontrar la posición actual cuando se mueve el buscapersonas, es decir.) De la 1 a la página siguiente? –
El ViewPagerAdapter debe tener una función getPosition() o algo así. –
Gracias, Frank. Ya pensé en una solución similar, pero mi problema es obtener la posición actual de ViewPager desde el MyListViewAdapter. Hay un método llamado getCurrentItem() que debería hacerlo, pero siempre devuelvo "0". (Lo uso en el objeto de ViewPager dentro del método getView) – kiberNet