再次内容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 ([email protected]) * 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 ([email protected]) * 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 ([email protected]) * 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)该方法可以是。
版权声明:本文博主原创文章,博客,未经同意不得转载。
时间: 2024-10-13 13:12:01