再次內容View的ViewPager該介面卡PagerAdapter簡包,支援List資料與SparseArray資料。隨著更新的瀏覽功能。
首先,首先貼上頂部抽象類程式碼:
/*
* Date: 14-8-18
* Project: Access-Control-V2
*/
package cn.irains.access_control_v2.common;
import android.support.v4.view.PagerAdapter;
import android.util.SparseArray;
import android.view.View;
import android.view.ViewGroup;
import java.util.List;
/**
* 抽象的PagerAdapter實現類,封裝了內容為View的公共操作.
* Author: msdx (645079761@qq.com)
* Time: 14-8-18 下午2:34
*/
public abstract class AbstractViewPagerAdapter extends PagerAdapter {
protected SparseArray<View> mViews;
public AbstractViewPagerAdapter() {
mViews = new SparseArray<View>();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = mViews.get(position);
if (view == null) {
view = newView(position);
mViews.put(position, view);
}
container.addView(view);
return view;
}
public abstract View newView(int position);
public void notifyUpdateView(int position) {
View view = updateView(mViews.get(position), position);
mViews.put(position, view);
notifyDataSetChanged();
}
public View updateView(View view, int position) {
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mViews.get(position));
}
}
這裡僅僅對View相關的操作進行封裝。不涉及不論什麼資料,並新增了兩個方法,一個是notifyUpdateView(int position)。呼叫它之後將會去更新指定位置的檢視。
還有一個方法是public View updateView(View view, int position)。在這裡進行更新檢視的詳細操作。
接下來看資料為List的封裝,程式碼例如以下:
/*
* Date: 14-8-18
* Project: Access-Control-V2
*/
package cn.irains.access_control_v2.common;
import android.view.View;
import java.util.List;
/**
* 抽象的PagerAdapter實現類,封裝了內容為View,資料為List型別的介面卡實現.
* Author: msdx (645079761@qq.com)
* Time: 14-8-18 下午2:34
*/
public abstract class AbstractPagerListAdapter<T> extends AbstractViewPagerAdapter {
protected List<T> mData;
public AbstractPagerListAdapter(List<T> data) {
mData = data;
}
@Override
public int getCount() {
return mData.size();
}
public abstract View newView(int position);
public T getItem(int position) {
return mData.get(position);
}
}
方法還是和上篇文章基本一樣的。僅僅是有些方法抽取到父類中。然後在該類中繼承。
相同。資料為SparseArray的介面卡封裝類程式碼與其相似,例如以下:
/*
* Date: 14-8-18
* Project: Access-Control-V2
*/
package cn.irains.access_control_v2.common;
import android.util.SparseArray;
import android.view.View;
/**
* 抽象的PagerAdapter實現類,封裝了內容為View,資料為SparseArray型別的介面卡實現.
* Author: msdx (645079761@qq.com)
* Time: 14-8-18 下午2:34
*/
public abstract class AbstractPagerSparseAdapter<T> extends AbstractViewPagerAdapter {
protected SparseArray<T> mData;
public AbstractPagerSparseAdapter(SparseArray<T> data) {
mData = data;
}
@Override
public int getCount() {
return mData.size();
}
public abstract View newView(int position);
public T getItem(int position) {
return mData.valueAt(position);
}
}
二手。只需要繼承和實施newView(int position)該方法可以是。
版權宣告:本文博主原創文章,部落格,未經同意不得轉載。