ViewPagersのリストを実装したいと思います。ListViewのすべてのアイテムはViewPagerです。これは今のところ機能します。私の問題は、ViewPagerの状態を維持できないことです。たとえば、リストの最初のViewPagerのページを変更し、最初のViewPagerが表示されなくなるまで下にスクロールしてからもう一度上にスクロールすると、最初のViewPagerに最初のページが再び表示されます。
ListView用とViewPager用の2つのアダプターを作成しました。ListAdapterのgetViewメソッドのconvertViewパラメーターからビューをリサイクルしようとしています。私がそれを正しく行っているかどうかわからず、ViewPagerAdapterでそれを行う方法がわかりません。
何か案は?
これまでの私のコードは次のとおりです。
MyListAdapterからのgetView:
@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からのinstantiateItem:
@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;
}
ありがとう!:)