Android 各类 Adapter 封装
各类 Adapter 封装,包括:BaseAdapter、PagerAdapter、FragmentPagerAdapter
持续更新中
前言
不废话,直接源代码,自行阅读。认可的自行收藏使用
目录
一、BaseAdapter: ListView, GridView, Spinner
- API
- 封装类
- Demo
二、PagerAdapter: ViewPager
- API
- 封装类
- Demo
三、FragmentPagerAdapter: ViewPager + Fragment
- API
- 封装类
- Demo
一、BaseAdapter: ListView, GridView, Spinner
1. API
- void addObject(List objects, boolean clear)
- void addObject(T object)
- void removeObject(T object)
- void clearObject()
- List getObjects()
2. 封装类
/**
* Description: AbsListView 适配器
* <p>Create Date: 2016-10-31
* <p>Modify Date: 2017-11-28
*
* @author csp
* @version 1.0.2
* @since AndroidLibrary 1.0.0
*/
@SuppressWarnings({
"unused", "WeakerAccess"})
public abstract class BaseListAdapter<T> extends BaseAdapter {
private List<T> objects; // 数据源
private int[] resources; // 模板文件: R.selector_item_background
private LayoutInflater inflater; // 解析XML布局资源的填充器
// ========================================
// 构造方法,Getter,Setter
// ========================================
public BaseListAdapter(Context context, List<T> objects, int[] layoutId) {
this.objects = new ArrayList<>();
this.resources = layoutId;
this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// 添加数据
addObject(-1, objects, false);
}
public BaseListAdapter(Context context, List<T> objects, int layoutId) {
this(context, objects, new int[]{layoutId});
}
public List<T> getObjects() {
return objects;
}
// ========================================
// 数据源操作方法
// ========================================
/**
* 追加数据源(不刷新UI)
*
* @param position 添加位置, -1: 添加在末尾
* @param objects 数据
* @param clear true: 清空数据后,再设置数据源
*/
public void addObject(int position, List<T> objects, boolean clear) {
if (clear)
this.objects.clear();
if (objects == null || objects.isEmpty())
return;
if (position < 0)
this.objects.addAll(objects);
else
this.objects.addAll(position, objects);
}
/**
* @see #addObject(int, List, boolean)
*/
public void addObject(List<T> objects, boolean clear) {
addObject(-1, objects, clear);
}
/**
* @see #addObject(int, List, boolean)
*/
public void addObject(int position, T object, boolean clear) {
if (clear)
this.objects.clear();
if (object == null)
return;
if (position < 0)
this.objects.add(object);
else
this.objects.add(position, object);
}
/**
* @see #addObject(int, Object, boolean)
*/
public void addObject(T object) {
addObject(-1, object, false);
}
/**
* 删除数据源
*/
public void removeObject(T object) {
objects.remove(object);
}
/**
* 清空数据源
*/
public void clearObject() {
objects.clear();
}
// ========================================
// getView()
// ==========================