我有一个非常简单的pageradapter,由于某种原因,它删除了0位置的视图
当滚动到位置2时为1。
具体来说,当我第一次运行应用程序时,有3个视图。我滚动到位置2,位置1的视图将消失。视图0仍然存在。如果滚动到视图0并返回视图2,然后再次返回视图0,则视图0会突然消失。我再次执行同样的操作,我实际上可以看到视图0被实例化并立即被销毁。
这是怎么回事?
主要活动

public class MainActivity extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final MyPagerAdapter adapter = new MyPagerAdapter(this);
        final ViewPager myPager = (ViewPager) findViewById(R.id.mypanelpager);
        myPager.setAdapter(adapter);
        myPager.setCurrentItem(1);
}


public class MyPagerAdapter extends PagerAdapter {

private Context ctx;
Calendar c = Calendar.getInstance();
int month = c.get(Calendar.MONTH);
int year = c.get(Calendar.YEAR);
ViewGroup collection;

public MyPagerAdapter (Context ctx){
    this.ctx = ctx ;
}


@Override
public int getCount() {
    return 3;
}

public Object instantiateItem(ViewGroup container, int position ){
    this.collection = (ViewPager)container;
    NewMonth monthObject = new NewMonth(ctx, month+position-1,2012);
    View monthLayout = monthObject.newParentLayout;
    collection.addView(monthLayout);
    return monthLayout;
    return addViewAt(position);
    }


@Override
    public void destroyItem(ViewGroup container, int position, Object object) {
    collection.removeViewAt(position);
}


 @Override
     public Parcelable saveState() {
     return null;
     }


@Override
public boolean isViewFromObject(View view, Object arg1) {
    return view==arg1;
}
}

最佳答案

必须在内存中维护所有指定offscreenpagelimit为n-1的选项卡,在您的情况下,将其放入oncreate方法中:

myPager.setOffscreenPageLimit(2);

关于android - 当position == 2时为什么要调用destroyItem? android pagerAdapter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12539961/

10-12 01:20