package com.youth.xframe.adapter;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public abstract class BaseRecyclerViewAdapter<T, VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH> {
protected List<T> dataLists;
public BaseRecyclerViewAdapter(){
this(new ArrayList<T>());
}
public BaseRecyclerViewAdapter(@NonNull List<T> dataLists){
this.dataLists = dataLists;
}
/**
* 获取指定位置的数据
* @param position
* @return
*/
public T getItem(int position){
return dataLists.get(position);
}
/**
* 获取数据集合
* @return
*/
public List<T> getDataLists(){
return dataLists;
}
/**
* 设置全新的数据集合,如果传入null,则清空数据列表(会清空以前的集合数据)
* @param datas
*/
public void setDataLists(List<T> datas) {
dataLists.clear();
if (datas != null && !datas.isEmpty()) {
dataLists.addAll(datas);
}
notifyDataSetChanged();
}
/**
* 添加数据条目
*
* @param data
*/
public void add(T data) {
dataLists.add(data);
notifyDataSetChanged();
}
/**
* 在指定位置添加数据条目
*
* @param position
* @param data
*/
public void add(int position, T data) {
dataLists.add(position,data);
notifyDataSetChanged();
}
/**
* 添加数据条目集合
*
* @param datas
*/
public void addAll(List<T> datas) {
dataLists.addAll(datas);
notifyDataSetChanged();
}
/**
* 在指定位置添加数据条目集合
*
* @param position
* @param datas
*/
public void addAll(int position,List<T> datas) {
dataLists.addAll(position,datas);
notifyDataSetChanged();
}
/**
* 删除指定索引数据条目
*
* @param position
*/
public void remove(int position) {
dataLists.remove(position);
notifyDataSetChanged();
}
/**
* 删除指定数据条目
*
* @param data
*/
public void remove(T data) {
dataLists.remove(data);
notifyDataSetChanged();
}
/**
* 替换指定索引的数据条目
*
* @param location
* @param newData
*/
public void replace(int location, T newData) {
dataLists.set(location, newData);
notifyDataSetChanged();
}
/**
* 替换指定数据条目
*
* @param oldData
* @param newData
*/
public void replace(T oldData, T newData) {
replace(dataLists.indexOf(oldData), newData);
}
/**
* 交换两个数据条目的位置
*
* @param fromPosition
* @param toPosition
*/
public void move(int fromPosition, int toPosition) {
Collections.swap(dataLists, fromPosition, toPosition);
notifyDataSetChanged();
}
/**
* 清空
*/
public void clear() {
dataLists.clear();
notifyDataSetChanged();
}
}