詳解Android App中ViewPager使用PagerAdapter的方法
PageAdapter是一個抽象類,直接繼承于Object,導入包android.support.v4.view.PagerAdapter即可使用。
要使用PagerAdapter,
首先要繼承PagerAdapter類,至少覆蓋以下方法:
在每次創(chuàng)建ViewPager或滑動過程中,以下四個方法都會被調用,而instantiateItem和destroyItem中的方法要自己去實現(xiàn)。
public abstract int getCount();
這個方法,是獲取當前窗體界面數(shù)
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不可以更新數(shù)據(jù)問題的解決
在做項目的時候,發(fā)現(xiàn)即使調用了
galleryAdapter.notifyDataSetChanged();
但是ViewPager還是不會更新原來的數(shù)據(jù)。
后來在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]
可以更新數(shù)據(jù)了。嘿嘿。
- android開發(fā)中ListView與Adapter使用要點介紹
- Android中 自定義數(shù)據(jù)綁定適配器BaseAdapter的方法
- Android自定義Spinner下拉列表(使用ArrayAdapter和自定義Adapter實現(xiàn))
- Android listview與adapter詳解及實例代碼
- Android開發(fā)中ListView自定義adapter的封裝
- Android中的Adapter簡單介紹
- Android Adapter的幾個常用方法
- Android中GridView和ArrayAdapter用法實例分析
- Kotlin編寫Android適配器Adapter
- Android ListView適配器(Adapter)優(yōu)化方法詳解
- Android開發(fā)中總結的Adapter工具類【附完整源碼下載】
相關文章
Android Studio獲取網(wǎng)絡JSON數(shù)據(jù)并處理的方法
這篇文章主要為大家詳細介紹了Android Studio獲取網(wǎng)絡JSON數(shù)據(jù)并處理的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10詳談OnTouchListener與OnGestureListener的區(qū)別
下面小編就為大家?guī)硪黄斦凮nTouchListener與OnGestureListener的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04Android中App字體大小不隨系統(tǒng)改變而改變
這篇文章主要介紹了Android中App字體大小不隨系統(tǒng)改變而改變,需要的朋友可以參考下2017-04-04Android編程實現(xiàn)實時監(jiān)聽EditText文本輸入的方法
這篇文章主要介紹了Android編程實現(xiàn)實時監(jiān)聽EditText文本輸入的方法,結合實例形式分析了EditText控件及事件響應相關操作技巧,需要的朋友可以參考下2017-06-06Android GridView實現(xiàn)橫向列表水平滾動
這篇文章主要為大家詳細介紹了Android GridView實現(xiàn)橫向列表水平滾動,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07Android?PowerManagerService?打開省電模式
這篇文章主要介紹了Android?PowerManagerService打開省電模式,文章通告省電模式的打開過程、什么是?battery?saver?sticky?模式兩部分展開詳情,感興趣的朋友可以參考一下2022-08-08Android自定義ViewFlipper實現(xiàn)滾動效果
這篇文章主要為大家詳細介紹了Android自定義ViewFlipper實現(xiàn)滾動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08