ViewPager.setOffscreenPageLimit(0)没有任何作用的。我怎么只能在一个ViewPager一次加载一个页面? [英] ViewPager.setOffscreenPageLimit(0) has no effect at all. How do I only load one page at a time in a ViewPager?
问题描述
甚至当我设置oViewPager.setOffscreenPageLimit(0)我的观点仍然寻呼机1加载关闭屏幕页面上的可见页的一面。
我如何让它只加载页面,当用户幻灯片呢?
的我的适配器是否有帮助:的
公共类MainPagerAdapter扩展FragmentPagerAdapter {
受保护的静态最终的String [] CONTENT =新的String [] {第1页,第2页,第3页,第4页}; 私人INT mCount = CONTENT.length; 公共MainPagerAdapter(FragmentManager FM){
超(FM);
} @覆盖
公共片段的getItem(INT位置){
//返回TestFragment.newInstance(含量[位置%CONTENT.length]);
返回MainFragment.newInstance(位置);
} @覆盖
公众诠释的getCount(){
返回mCount;
} @覆盖
公共CharSequence的getPageTitle(INT位置){
返回MainPagerAdapter.CONTENT [位置%CONTENT.length]。
} 公共无效setCount(诠释计数){
如果(计数大于0&放大器;&放大器;计数&下; = 10){
mCount =计数;
notifyDataSetChanged();
}
}
}
另一种方法是使用 OnPageChangeListener
,每当出现一个页面变化调用一个刷新方法在你的片段。
这将要求您设置一个更高的 OffScreenPageLimit
,但片段将每一个被带入视图时更新。
pager.setOnPageChangeListener(新OnPageChangeListener(){ @覆盖
公共无效使用onPageSelected(INT位置){
(。(MyRefreshableFragment)pager.getAdapter()的getItem(位置))刷新()。
} @覆盖
公共无效onPageScrolled(INT为arg0,ARG1浮球,诠释ARG2){}
@覆盖
公共无效onPageScrollStateChanged(INT为arg0){}
});
even when I set oViewPager.setOffscreenPageLimit(0) my view pager still loads 1 off screen page on each side of the visible page.
How do I make it only load the page when the user slides to it?
My adapter if it helps:
public class MainPagerAdapter extends FragmentPagerAdapter {
protected static final String[] CONTENT = new String[] { "page 1", "page 2", "page 3", "page 4", };
private int mCount = CONTENT.length;
public MainPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
//return TestFragment.newInstance(CONTENT[position % CONTENT.length]);
return MainFragment.newInstance(position);
}
@Override
public int getCount() {
return mCount;
}
@Override
public CharSequence getPageTitle(int position) {
return MainPagerAdapter.CONTENT[position % CONTENT.length];
}
public void setCount(int count) {
if (count > 0 && count <= 10) {
mCount = count;
notifyDataSetChanged();
}
}
}
Another alternative is to use a OnPageChangeListener
, and whenever a page change occurs call a refresh method in your fragments.
This will require you to set a higher OffScreenPageLimit
, but the fragments will be updated every time one is brought into view.
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position){
((MyRefreshableFragment)pager.getAdapter().getItem(position)).refresh();
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {}
@Override
public void onPageScrollStateChanged(int arg0) {}
});
这篇关于ViewPager.setOffscreenPageLimit(0)没有任何作用的。我怎么只能在一个ViewPager一次加载一个页面?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!