有時候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 } });