国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

詳解Android App中ViewPager使用PagerAdapter的方法

2020-01-02 06:59:01
字體:
來源:轉載
供稿:網友

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]

可以更新數據了。嘿嘿。  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥中县| 昭平县| 兰西县| 汝南县| 那曲县| 新田县| 大城县| 扎兰屯市| 阳城县| 乌兰察布市| 安乡县| 隆尧县| 江山市| 奉新县| 宜君县| 白银市| 政和县| 定襄县| 瑞丽市| 修水县| 策勒县| 云霄县| 周至县| 阳高县| 汝南县| 兴安县| 马关县| 吉木萨尔县| 平果县| 鹿泉市| 绥化市| 丹阳市| 高淳县| 芒康县| 林口县| 治多县| 林周县| 宝山区| 通山县| 重庆市| 梁河县|