package com.ydl.ydlcommon.adapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.ydl.ydlcommon.view.BaseViewHolder; import com.ydl.ydlcommon.view.BaseViewHolder; import java.util.List; /** * Created by harvie on 2016/9/28. * 普通的万能Adapter * 支持onItemClick * 支持onLongItemClick */ public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<BaseViewHolder> { private Context mContext; private List<T> mDatas; private int mLayoutId; private OnItemClickListener mItemClickListener; private onLongItemClickListener mLongItemClickListener; public BaseRecyclerAdapter(Context mContext, List<T> mDatas, int mLayoutId) { this.mContext = mContext; this.mDatas = mDatas; this.mLayoutId = mLayoutId; } public void updateData(List<T> data) { mDatas.clear(); mDatas.addAll(data); notifyDataSetChanged(); } public void addAll(List<T> data) { mDatas.addAll(data); notifyDataSetChanged(); } public List<T> getData(){ return mDatas; } @Override public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(mLayoutId, parent, false); BaseViewHolder holder = new BaseViewHolder(view); return holder; } @Override public int getItemCount() { return mDatas.size(); } @Override public void onBindViewHolder(BaseViewHolder holder, final int position) { convert(mContext, holder, mDatas.get(position),position); if (mItemClickListener != null) { holder.getItemView().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mItemClickListener.onItemClick(v, position); } }); } if (mLongItemClickListener != null) { holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { mLongItemClickListener.onLongItemClick(v, position); return true; } }); } } protected abstract void convert(Context mContext, BaseViewHolder holder, T t,int position); public interface OnItemClickListener { void onItemClick(View view, int position); } public interface onLongItemClickListener { void onLongItemClick(View view, int postion); } public void setOnItemClickListener(OnItemClickListener listener) { this.mItemClickListener = listener; } public void setonLongItemClickListener(onLongItemClickListener listener) { this.mLongItemClickListener = listener; } }