package com.tal.jxtteacher.uijxt.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.SparseArray;
import android.view.View;
import java.util.ArrayList;
import java.util.List;
public abstract class SingleRecyclerViewAdapter<T> extends RecyclerView.Adapter<SingleRecyclerViewAdapter.HashViewHolder> {
public Context mContext;
private List<T> mItems;
public SingleRecyclerViewAdapter(Context context){
this.mContext = context;
this.mItems = new ArrayList<>();
}
// @NonNull
// @Override
// public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
// return null;
// }
//
// @Override
// public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
//
// }
@Override
public int getItemCount() {
if (mItems == null){
return 0;
}
return mItems.size();
}
public T getItem(int position) {
if(mItems == null)
return null;
if(position < mItems.size())
return mItems.get(position);
return null;
}
@Override
public long getItemId(int position) {
return position;
}
public void clear() {
if (this.mItems != null){
this.mItems.clear();
}
notifyDataSetChanged();
}
public void setItems(List<T> items){
if (this.mItems != null){
this.mItems.clear();
this.mItems.addAll(items);
}
// this.mItems = items;
notifyDataSetChanged();
}
public void addItems(List<T> items) {
if(mItems != null) {
this.mItems.addAll(items);
notifyDataSetChanged();
}
}
public List<T> getItems(){
return mItems;
}
public void removeItem(T t){
int index = mItems.indexOf(t);
if(index >= 0) {
mItems.remove(t);
notifyItemRemoved(index);
}
}
public void removeItem(int position){
mItems.remove(position);
notifyDataSetChanged();
}
public void removeItemNoNotify(int position){
mItems.remove(position);
}
public void removeItemAnim(int position){
removeItemNoNotify(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position,getItemCount());
}
public void addItem(T t){
if(!mItems.contains(t)) {
mItems.add(t);
notifyItemInserted(getItemCount() - 1);
}
}
public void addItemAnim(T t){
mItems.add(t);
notifyItemInserted(getItemCount() - 1);
}
public static class HashViewHolder extends RecyclerView.ViewHolder{
private SparseArray<View> mViewCache = new SparseArray<>();
public HashViewHolder(@NonNull View itemView) {
super(itemView);
}
public void putView(int id){
if (itemView != null){
mViewCache.put(id,itemView.findViewById(id));
}
}
public <T extends View> T findView(int id){
View view = mViewCache.get(id);
if (view == null){
view = itemView.findViewById(id);
mViewCache.put(id,view);
}
return (T) view;
}
}
}