編輯:關於Android編程
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]
可以更新數據了。嘿嘿。
小米手環怎麼接入微信 小米手環接入微信方法
小米手環是小米公司自主研發的電子智能輔助器,最近小米手環APP迎來了一次更新,多了幾個新功能,同時在微信接入位置也發生了改變,今天當下小編就小米手環如何接入
設計模式之命令模式(Command)摘錄
23種GOF設計模式一般分為三大類:創建型模式、結構型模式、行為模式。創建型模式抽象了實例化過程,它們幫助一個系統獨立於如何創建、組合和表示它的那些對象。一個類創建型模式
android中使用Activity實現監聽手指上下左右滑動
用Activity的onTouchEvent方法實現監聽手指上下左右滑動應用了Activity的ontouchEvent方法監聽手指點擊事件,手指滑動的時候會先按下,滑倒
android自定義控件系列教程----視圖
理解android視圖 對於android設備我們所看到的區域其實和它在底層的繪制有著很大的關系,很多時候我們都只關心我們所看到的,那麼在底層一點它到底是怎麼樣的一個東西