package com.ithooks.android.xreap.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import com.ithooks.android.xreap.log.LogUtils;
import java.util.ArrayList;
import java.util.List;
/**
* Author: ZhuWenWu
* Version V1.0
* Date: 15/4/11 15:18
* Description: RecyclerView 适配器基类
* Modification History:
* Date Author Version Description
* -----------------------------------------------------------------------------------
* 15/4/11 ZhuWenWu 1.0 1.0
* Why & What is modified:
*/
public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
protected final String TAG = getClass().getSimpleName();
protected final Context mContext;
protected final LayoutInflater mLayoutInflater;
protected List<T> mDataList = new ArrayList<>();
public BaseRecyclerAdapter(Context context) {
mContext = context;
mLayoutInflater = LayoutInflater.from(context);
}
public List<T> getDataList() {
return mDataList;
}
public T getItemData(int position) {
return position < mDataList.size() ? mDataList.get(position) : null;
}
@Override
public int getItemCount() {
return mDataList == null ? 0 : mDataList.size();
}
/**
* 移除某一条记录
*
* @param position 移除数据的position
*/
public void removeItem(int position) {
if (position < mDataList.size()) {
mDataList.remove(position);
notifyItemRemoved(position);
}
}
/**
* 添加一条记录
*
* @param data 需要加入的数据结构
* @param position 插入位置
*/
public void addItem(T data, int position) {
if (position <= mDataList.size()) {
mDataList.add(position, data);
notifyItemInserted(position);
}
}
/**
* 添加一条记录
*
* @param data 需要加入的数据结构
*/
public void addItem(T data) {
addItem(data, mDataList.size());
}
/**
* 移除所有记录
*/
public void clearItems() {
int size = mDataList.size();
if (size > 0) {
mDataList.clear();
LogUtils.d(TAG, "clearItems --> ");
notifyItemRangeRemoved(0, size);
}
}
/**
* 批量添加记录
*
* @param data 需要加入的数据结构
* @param position 插入位置
*/
public void addItems(List<T> data, int position) {
if (position <= mDataList.size() && data != null && data.size() > 0) {
LogUtils.d(TAG, "addItems --> position" + position);
mDataList.addAll(position, data);
notifyItemRangeChanged(position, data.size());
}
}
/**
* 批量添加记录
*
* @param data 需要加入的数据结构
*/
public void addItems(List<T> data) {
addItems(data, mDataList.size());
}
}