package com.dl7.player.media; import android.content.Context; import android.widget.BaseAdapter; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * Created by long on 2016/6/7. * ListView的基础适配器 */ public abstract class BaseListAdapter<T> extends BaseAdapter { protected Context mContext; protected List<T> mDatas; public BaseListAdapter(Context context) { this.mContext = context; this.mDatas = new ArrayList<>(); } public BaseListAdapter(Context context, List<T> datas) { this.mContext = context; this.mDatas = datas; } public BaseListAdapter(Context context, T[] datas) { this.mContext = context; this.mDatas = new ArrayList<T>(); Collections.addAll(mDatas, datas); } @Override public int getCount() { return mDatas.size(); } @Override public T getItem(int position) { return mDatas.get(position); } @Override public long getItemId(int position) { return position; } /** * 更新数据,替换原有数据 * @param items */ public void updateItems(List<T> items) { mDatas = items; notifyDataSetChanged(); } /** * 插入一条数据 * @param item 数据 */ public void addItem(T item) { mDatas.add(0, item); notifyDataSetChanged(); } /** * 插入一条数据 * @param item 数据 * @param position 插入位置 */ public void addItem(T item, int position) { position = Math.min(position, mDatas.size()); mDatas.add(position, item); notifyDataSetChanged(); } /** * 在列表尾添加一串数据 * @param items */ public void addItems(List<T> items) { mDatas.addAll(items); } /** * 移除一条数据 * @param position 位置 */ public void removeItem(int position) { if (position > mDatas.size() - 1) { return; } mDatas.remove(position); notifyDataSetChanged(); } /** * 移除一条数据 * @param item 数据 */ public void removeItem(T item) { int pos = 0; for (T info : mDatas) { if (item.hashCode() == info.hashCode()) { removeItem(pos); break; } pos++; } } /** * 清除所有数据 */ public void cleanItems() { mDatas.clear(); notifyDataSetChanged(); } }