詳解Android App中ViewPager使用PagerAdapter的方法
PageAdapter是一個(gè)抽象類(lèi),直接繼承于Object,導(dǎo)入包android.support.v4.view.PagerAdapter即可使用。
要使用PagerAdapter,
首先要繼承PagerAdapter類(lèi),至少覆蓋以下方法:
在每次創(chuàng)建ViewPager或滑動(dòng)過(guò)程中,以下四個(gè)方法都會(huì)被調(diào)用,而instantiateItem和destroyItem中的方法要自己去實(shí)現(xiàn)。
public abstract int getCount();
這個(gè)方法,是獲取當(dāng)前窗體界面數(shù)
public abstract boolean isViewFromObject(android.view.View arg0, java.lang.Object arg1);
這個(gè)方法用于判斷是否由對(duì)象生成界面
public java.lang.Object instantiateItem(android.view.View container, int position);
這個(gè)方法,return一個(gè)對(duì)象,這個(gè)對(duì)象表明了PagerAdapter適配器選擇哪個(gè)對(duì)象放在當(dāng)前的ViewPager中
public void destroyItem(android.view.ViewGroup container, int position, java.lang.Object object);
這個(gè)方法,是從ViewGroup中移出當(dāng)前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ù)問(wèn)題的解決
在做項(xiàng)目的時(shí)候,發(fā)現(xiàn)即使調(diào)用了
galleryAdapter.notifyDataSetChanged();
但是ViewPager還是不會(huì)更新原來(lái)的數(shù)據(jù)。
后來(lái)在stackoverflow上面找到了方法,原文鏈接:
http://stackoverflow.com/questions/7263291/viewpager-pageradapter-not-updating-the-view
于是花了一點(diǎn)時(shí)間,修改了代碼:
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 是一個(gè)PagerAdapter的內(nèi)部常量,值是-2,
API里面有說(shuō)明:
int android.support.v4.view.PagerAdapter.POSITION_NONE = -2 [0xfffffffe]
可以更新數(shù)據(jù)了。嘿嘿。
- android開(kāi)發(fā)中ListView與Adapter使用要點(diǎn)介紹
- Android中 自定義數(shù)據(jù)綁定適配器BaseAdapter的方法
- Android自定義Spinner下拉列表(使用ArrayAdapter和自定義Adapter實(shí)現(xiàn))
- Android listview與adapter詳解及實(shí)例代碼
- Android開(kāi)發(fā)中ListView自定義adapter的封裝
- Android中的Adapter簡(jiǎn)單介紹
- Android Adapter的幾個(gè)常用方法
- Android中GridView和ArrayAdapter用法實(shí)例分析
- Kotlin編寫(xiě)Android適配器Adapter
- Android ListView適配器(Adapter)優(yōu)化方法詳解
- Android開(kāi)發(fā)中總結(jié)的Adapter工具類(lèi)【附完整源碼下載】
相關(guān)文章
Android Studio獲取網(wǎng)絡(luò)JSON數(shù)據(jù)并處理的方法
這篇文章主要為大家詳細(xì)介紹了Android Studio獲取網(wǎng)絡(luò)JSON數(shù)據(jù)并處理的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10詳談OnTouchListener與OnGestureListener的區(qū)別
下面小編就為大家?guī)?lái)一篇詳談OnTouchListener與OnGestureListener的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04Android中App字體大小不隨系統(tǒng)改變而改變
這篇文章主要介紹了Android中App字體大小不隨系統(tǒng)改變而改變,需要的朋友可以參考下2017-04-04Android編程實(shí)現(xiàn)實(shí)時(shí)監(jiān)聽(tīng)EditText文本輸入的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)實(shí)時(shí)監(jiān)聽(tīng)EditText文本輸入的方法,結(jié)合實(shí)例形式分析了EditText控件及事件響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下2017-06-06Android GridView實(shí)現(xiàn)橫向列表水平滾動(dòng)
這篇文章主要為大家詳細(xì)介紹了Android GridView實(shí)現(xiàn)橫向列表水平滾動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07Android?PowerManagerService?打開(kāi)省電模式
這篇文章主要介紹了Android?PowerManagerService打開(kāi)省電模式,文章通告省電模式的打開(kāi)過(guò)程、什么是?battery?saver?sticky?模式兩部分展開(kāi)詳情,感興趣的朋友可以參考一下2022-08-08Android自定義ViewFlipper實(shí)現(xiàn)滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android自定義ViewFlipper實(shí)現(xiàn)滾動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08