在instantiateItem上创建更多项目,而不仅仅是默认项目

时间:2015-03-22 00:08:58

标签: android android-viewpager fragmentstatepageradapter android-pageradapter

我有一个带箭头的适配器(FragmentStatePagerAdapter),每次点击都会创建下一页:

    leftArrow.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
        }
    });
    rightArrow.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);

        }
    });

@Override
public Object instantiateItem(ViewGroup collection, int position) {
    int i=0;
    for (i=position; i<position+2;i++){
    MyPage currentPage = pages.get(i);
    if(page == null){
        currentPage = new MyPage(i);
        pages.put(i, page);     
        super.instantiateItem(collection, i);
    }
    }

    return super.instantiateItem(collection, position);
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    MyPage pageToRemove = pages.get(position);
    if(pageToRemove != null){
        pageToRemove.dispose();
        pages.remove(position);
    }
    super.destroyItem(container, position, object);
}
}

我想在每次迭代时创建不是1页而是3,因为我在分页时有延迟。我试图创建页面并将它们插入到数组中,但问题是我只有一个返回return super.instantiateItem(collection, position);

任何想法我怎么能多次调用它?

1 个答案:

答案 0 :(得分:1)

  

任何想法我怎么能多次调用它?

你不是那个正在进行呼叫的人 - ViewPager。您可以致电setOffscreenPageLimit()以增加ViewPager将缓存的网页数量。默认情况下,该值为1,表示ViewPager将缓存3个页面(当前的一个页面,加上一个页面)。将其归结为2将ViewPager缓存5页,依此类推。

请记住:

  • 这会降低设置ViewPager的速度,因此它不是慢页面的解决方案

  • 这会消耗更多的堆空间