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?

查看:1149
本文介绍了ViewPager.setOffscreenPageLimit(0)没有任何作用的。我怎么只能在一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆