首页 > 代码库 > viewpager处理(三):让viewpager不预加载下一页

viewpager处理(三):让viewpager不预加载下一页

有时候viewpager加载页面的时候,我们发现页面的数据量很大,预加载的话会消耗性能,为了节省用户流量和手机性能,所以我们想让viewpager不自动预加载下一页,怎么实现呢?

viewpager预加载是这样产生的:在PagerAdapter里的instantiateItem方法中,如果有加载数据的逻辑,则viewpager就会预加载。所以加载数据的逻辑不能放在PagerAdapter里的instantiateItem方法中。我们可以将加载数据逻辑放到页面切换监听中。

1.加载数据不放在PagerAdapter里的instantiateItem方法中进行

    class ContentAdapter extends PagerAdapter {        @Override        public int getCount() {            return mList.size();        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view == object;        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            BasePager basePager = mList.get(position);                        //basePager.initData();//加载数据                        View view = basePager.mRootView;//获取当前页面的布局            container.addView(view);            return view;        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView((View) object);        }    }

2.加载数据放在被切换到新页面的时候才进行,所以要加个onPageChangeListener

vpContent.setOnPageChangeListener(new OnPageChangeListener() {                        @Override            public void onPageSelected(int position) {                BasePager basePager = mList.get(position);//获取被切换到的页面                basePager.initData();//加载数据            }                        @Override            public void onPageScrolled(int position, float positionOffset,                    int positionOffsetPixels) {                // TODO Auto-generated method stub                            }                        @Override            public void onPageScrollStateChanged(int state) {                // TODO Auto-generated method stub                            }        });

 

viewpager处理(三):让viewpager不预加载下一页