在 instantiateItem 上创建更多项,而不是默认只创建一个
Creates more items on instantiateItem and not only one as default
我有一个带箭头的适配器 (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);
}
}
我想在每次迭代时创建 3 页而不是 1 页,因为我在分页时有延迟。我试图创建页面并将它们插入数组,但问题是我只有一个 return return return super.instantiateItem(collection, position);
有什么想法我怎样才能再调用它几次?
Any ideas how can I call it few more times?
您不是发出号召的人 -- ViewPager
是。您可以调用 setOffscreenPageLimit()
来增加 ViewPager
将缓存的页面数。默认情况下,该值为 1,这意味着 ViewPager
将缓存 3 个页面(当前页面,两侧各加一个)。将其设为 2 将 ViewPager
缓存 5 个页面,依此类推。
切记:
这会减慢 ViewPager
的设置速度,因此它并不是解决慢速页面的真正方法
这会消耗更多的堆 space
我有一个带箭头的适配器 (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);
}
}
我想在每次迭代时创建 3 页而不是 1 页,因为我在分页时有延迟。我试图创建页面并将它们插入数组,但问题是我只有一个 return return return super.instantiateItem(collection, position);
有什么想法我怎样才能再调用它几次?
Any ideas how can I call it few more times?
您不是发出号召的人 -- ViewPager
是。您可以调用 setOffscreenPageLimit()
来增加 ViewPager
将缓存的页面数。默认情况下,该值为 1,这意味着 ViewPager
将缓存 3 个页面(当前页面,两侧各加一个)。将其设为 2 将 ViewPager
缓存 5 个页面,依此类推。
切记:
这会减慢
ViewPager
的设置速度,因此它并不是解决慢速页面的真正方法这会消耗更多的堆 space