我想实现一个 ViewPagers 列表。ListView 的每一项都是 ViewPager。到目前为止,这有效。我的问题是,我无法维护 ViewPager 的状态。例如:当我更改列表中第一个 ViewPager 的页面时,向下滚动直到第一个 ViewPager 不再可见,然后再次向上滚动,第一个 ViewPager 再次显示其第一页。
我写了两个适配器,一个用于 ListView,一个用于 ViewPager。我正在尝试从 ListAdapter 中 getView 方法的 convertView 参数中回收视图。不确定我是否做对了,也不知道如何在 ViewPagerAdapter 中做到这一点。
有任何想法吗?
到目前为止,这是我的代码:
从 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;
}
从 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;
}
谢谢!:)