詳解Android App中ViewPager使用PagerAdapter的方法
PageAdapter是一個抽象類,直接繼承于Object,導入包android.support.v4.view.PagerAdapter即可使用。
要使用PagerAdapter,
首先要繼承PagerAdapter類,至少覆蓋以下方法:
在每次創(chuàng)建ViewPager或滑動過程中,以下四個方法都會被調(diào)用,而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)即使調(diào)用了
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的內(nèi)部常量,值是-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ā)中總結(jié)的Adapter工具類【附完整源碼下載】
相關(guān)文章
Android實現(xiàn)漸變啟動頁和帶有指示器的引導頁
這篇文章主要為大家詳細介紹了Android實現(xiàn)漸變啟動頁和帶有指示器的引導頁,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-09-09
Android中TelephonyManager類的用法案例詳解
這篇文章主要介紹了Android中TelephonyManager類的用法,以獲取Android手機硬件信息為例詳細分析了TelephonyManager類的使用技巧,需要的朋友可以參考下2015-09-09
詳解Flutter?響應(yīng)式狀態(tài)管理框架GetX
這篇文章主要為大家介紹了Flutter?響應(yīng)式狀態(tài)管理框架GetX詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
Android scrollview實現(xiàn)底部繼續(xù)拖動查看圖文詳情
這篇文章主要為大家詳細介紹了Android scrollview實現(xiàn)底部繼續(xù)拖動查看圖文詳情,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-02-02

