【问题标题】:Creates more items on instantiateItem and not only one as default在 instantiateItem 上创建更多项目,而不仅仅是一个默认项目
【发布时间】:2015-03-22 00:08:57
【问题描述】:

我有一个带箭头的适配器 (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);

有什么想法可以再叫几次吗?

【问题讨论】:

    标签: android android-viewpager fragmentstatepageradapter android-pageradapter


    【解决方案1】:

    有什么想法可以再叫几次吗?

    你不是那个打电话的人——ViewPager 是。您可以调用setOffscreenPageLimit() 来增加ViewPager 将缓存的页面数量。默认情况下,该值为 1,这意味着 ViewPager 将缓存 3 个页面(当前页面,再加上任一页面)。将其增加到 2 将有 ViewPager 缓存 5 个页面,依此类推。

    记住:

    • 这会减慢ViewPager 的设置速度,因此它并不是真正的慢速页面解决方案

    • 这会消耗更多的堆空间

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      • 2016-03-28
      相关资源
      最近更新 更多