詳解Android App中ViewPager使用PagerAdapter的方法
PageAdapter是一個(gè)抽象類,直接繼承于Object,導(dǎo)入包android.support.v4.view.PagerAdapter即可使用。
要使用PagerAdapter,
首先要繼承PagerAdapter類,至少覆蓋以下方法:
在每次創(chuàng)建ViewPager或滑動(dòng)過程中,以下四個(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è)方法用于判斷是否由對象生成界面
public java.lang.Object instantiateItem(android.view.View container, int position);
這個(gè)方法,return一個(gè)對象,這個(gè)對象表明了PagerAdapter適配器選擇哪個(gè)對象放在當(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ù)問題的解決
在做項(xiàng)目的時(shí)候,發(fā)現(xiàn)即使調(diào)用了
galleryAdapter.notifyDataSetChanged();
但是ViewPager還是不會(huì)更新原來的數(shù)據(jù)。
后來在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里面有說明:
int android.support.v4.view.PagerAdapter.POSITION_NONE = -2 [0xfffffffe]
可以更新數(shù)據(jù)了。嘿嘿。
- android開發(fā)中ListView與Adapter使用要點(diǎn)介紹
- Android中 自定義數(shù)據(jù)綁定適配器BaseAdapter的方法
- Android自定義Spinner下拉列表(使用ArrayAdapter和自定義Adapter實(shí)現(xiàn))
- Android listview與adapter詳解及實(shí)例代碼
- Android開發(fā)中ListView自定義adapter的封裝
- Android中的Adapter簡單介紹
- Android Adapter的幾個(gè)常用方法
- Android中GridView和ArrayAdapter用法實(shí)例分析
- Kotlin編寫Android適配器Adapter
- Android ListView適配器(Adapter)優(yōu)化方法詳解
- Android開發(fā)中總結(jié)的Adapter工具類【附完整源碼下載】
相關(guān)文章
Android實(shí)現(xiàn)漸變啟動(dòng)頁和帶有指示器的引導(dǎo)頁
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)漸變啟動(dòng)頁和帶有指示器的引導(dǎo)頁,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
Android中TelephonyManager類的用法案例詳解
這篇文章主要介紹了Android中TelephonyManager類的用法,以獲取Android手機(jī)硬件信息為例詳細(xì)分析了TelephonyManager類的使用技巧,需要的朋友可以參考下2015-09-09
詳解Flutter?響應(yīng)式狀態(tài)管理框架GetX
這篇文章主要為大家介紹了Flutter?響應(yīng)式狀態(tài)管理框架GetX詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Android scrollview實(shí)現(xiàn)底部繼續(xù)拖動(dòng)查看圖文詳情
這篇文章主要為大家詳細(xì)介紹了Android scrollview實(shí)現(xiàn)底部繼續(xù)拖動(dòng)查看圖文詳情,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
Android應(yīng)用啟動(dòng)速度優(yōu)化
這篇文章主要介紹了Android應(yīng)用啟動(dòng)速度優(yōu)化的相關(guān)資料,需要的朋友可以參考下2016-01-01
Android控件之ImageView用法實(shí)例分析
這篇文章主要介紹了Android控件之ImageView用法,以實(shí)例形式較為詳細(xì)的分析了ImageView控件用于顯示圖片的使用方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09

