PageAdapter是一個抽象類,直接繼承于Object,導入包android.support.v4.view.PagerAdapter即可使用。
要使用PagerAdapter,
首先要繼承PagerAdapter類,至少覆蓋以下方法:
在每次創建ViewPager或滑動過程中,以下四個方法都會被調用,而instantiateItem和destroyItem中的方法要自己去實現。
public abstract int getCount();
這個方法,是獲取當前窗體界面數
public abstract boolean isViewFromObject(android.view.View arg0, java.lang.Object arg1);
這個方法用于判斷是否由對象生成界面
public java.lang.Object instantiateItem(android.view.View container, int position);
這個方法,return一個對象,這個對象表明了PagerAdapter適配器選擇哪個對象放在當前的ViewPager中
public void destroyItem(android.view.ViewGroup container, int position, java.lang.Object object);
這個方法,是從ViewGroup中移出當前View
public class ViewPagerAdapter extends PagerAdapter{    @Override    public int getCount() {      // TODO Auto-generated method stub      return 0;    }    @Override    public boolean isViewFromObject(View arg0, Object arg1) {      // TODO Auto-generated method stub      return false;    }    @Override    public void destroyItem(View container, int position, Object object) {      // TODO Auto-generated method stub      super.destroyItem(container, position, object);    }        @Override    public Object instantiateItem(View container, int position) {      // TODO Auto-generated method stub      return super.instantiateItem(container, position);    }      }    
ViewPager的PagerAdapter不可以更新數據問題的解決
在做項目的時候,發現即使調用了
galleryAdapter.notifyDataSetChanged();
但是ViewPager還是不會更新原來的數據。
后來在stackoverflow上面找到了方法,原文鏈接:
http://stackoverflow.com/questions/7263291/viewpager-pageradapter-not-updating-the-view
于是花了一點時間,修改了代碼:
protected PagerAdapter galleryAdapter = new PagerAdapter() {      @Override   public boolean isViewFromObject(View arg0, Object arg1) {      return arg0 == ((View)arg1);    }      @Override   public int getCount() {     return size;   }      @Override   public Object instantiateItem(View container, int position) {     return bindGalleryAdapterItemView(container, position);   }      @Override   public void destroyItem(View container, int position, Object object) {      ((ViewPager) container).removeView((View) object);    };        @Override      public void finishUpdate(View arg0) {}            @Override     public void restoreState(android.os.Parcelable state, ClassLoader loader) {          };       @Override      public Parcelable saveState() {        return null;      }        @Override      public void startUpdate(View arg0) {}           @Override     public int getItemPosition(Object object) {     return POSITION_NONE;     }  }; 注意:POSITION_NONE 是一個PagerAdapter的內部常量,值是-2,
API里面有說明:
int android.support.v4.view.PagerAdapter.POSITION_NONE = -2 [0xfffffffe]
可以更新數據了。嘿嘿。
新聞熱點
疑難解答