Как сохранить состояние ViewPager в ListView?

Я хочу реализовать список ViewPager. Каждый элемент ListView — это ViewPager. Это работает до сих пор. Моя проблема в том, что я не могу поддерживать состояние ViewPager. Например: когда я меняю страницу первого ViewPager в списке, прокручиваю вниз до тех пор, пока первый ViewPager больше не будет виден, а затем снова прокручиваю вверх, первый ViewPager снова показывает свою первую страницу.

Я написал два адаптера, один для ListView и один для ViewPager. Я пытаюсь переработать представление из параметра convertView метода getView в ListAdapter. Не уверен, правильно ли я это делаю, и понятия не имею, как это сделать в ViewPagerAdapter.

Есть идеи?

вот мой код на данный момент:

getView from 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;
}

instanceiateItem from 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;
}

Спасибо! :)

5
задан JJJ 20 July 2012 в 07:46
поделиться