我有一个带箭头的适配器(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);
任何想法我怎么能多次调用它?
答案 0 :(得分:1)
任何想法我怎么能多次调用它?
你不是那个正在进行呼叫的人 - ViewPager
。您可以致电setOffscreenPageLimit()
以增加ViewPager
将缓存的网页数量。默认情况下,该值为1,表示ViewPager
将缓存3个页面(当前的一个页面,加上一个页面)。将其归结为2将ViewPager
缓存5页,依此类推。
请记住:
这会降低设置ViewPager
的速度,因此它不是慢页面的解决方案
这会消耗更多的堆空间