ViewPager 從新加載 及 PagerAdapter 使用

PagerAdapter 簡介

PagerAdapter是android.support.v4包中的類,它的子類有FragmentPagerAdapter, FragmentStatePagerAdapter,這兩個adapter都是Fragment的適配器,用於實現Fragment的滑動效果,這兩個adapter的使用和區別此次就先不介紹了,等下次有時間再作詳細的介紹。android

PagerAdapter主要是viewpager的適配器,而viewPager則也是在android.support.v4擴展包中新添加的一個強大的控件,能夠實現控件的滑動效果,好比我們在軟件中常見的廣告欄的滑動效果,用viewPager就能夠實現。今天主要介紹如何使用viewPagr並重寫PagerAdapter實現常見廣告欄的滑動效果。緩存

PagerAdapter用法簡介

首先,若是繼承pageradapter,至少必須重寫下面的四個方法ide

1 instantiateItem(ViewGroup, int)  返回對象代表了PagerAdapter適配器選擇哪一個對象放在當前的ViewPager中
2. destroyItem(ViewGroup, int, Object) ViewGroup中移出當前View
3. getCount() 獲取當前窗體界面數
4. isViewFromObject(View, Object)  用於判斷是否由對象生成界面
下面咱們以代碼的形式,說明這四個方法的含義以及如何使用spa

 

 1  private class ViewPagerAdapter extends PagerAdapter {
 2         // 獲取要滑動的控件的數量,在這裏咱們以滑動的廣告欄爲例,那麼這裏就應該是展現的廣告圖片的ImageView數量
 3         @Override
 4         public int getCount() {
 5             return 0;
 6         }
 7 
 8         // 來判斷顯示的是不是同一張圖片,這裏咱們將兩個參數相比較返回便可
 9         @Override
10         public boolean isViewFromObject(View arg0, Object arg1) {
11             return arg0 == arg1;
12         }
13 
14         // PagerAdapter只緩存三張要顯示的圖片,若是滑動的圖片超出了緩存的範圍,就會調用這個方法,將圖片銷燬
15         @Override
16         public void destroyItem(ViewGroup view, int position, Object object) {
17         }
18 
19         // 當要顯示的圖片能夠進行緩存的時候,會調用這個方法進行顯示圖片的初始化,咱們將要顯示的ImageView加入到ViewGroup中,而後做爲返回值返回便可
20         public Object instantiateItem(ViewGroup container, int position) {
21             return container;
22         }
23 
24         public int getItemPosition(Object object) {
25             View view = (View)object;
26             int currentPage = ((PhotoPageActivity)context).getCurrentPagerIdx(); // Get current page index
27             if(currentPage == (Integer)view.getTag()){
28                 return POSITION_NONE;
29             }else{
30                 return POSITION_UNCHANGED;
31             }
32         }
33     }
34     // Get current page index
35     pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
36 
37         @Override
38         public void onPageSelected(int position) {
39             currentItem = position;
40         }
41 
42         @Override
43         public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
44         }
45 
46         @Override
47         public void onPageScrollStateChanged(int state) {
48         }
49     });
50     // Return current index to Adapter
51     public int getCurrentPagerIdx() {
52         return currentItem;
53     }

 

若是想要刷新 直接調用notifyDataSetChanged()code

相關文章
相關標籤/搜索