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
                
            }
        });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM