package cn.sinata.xldutils.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; import androidx.recyclerview.widget.RecyclerView; import java.util.List; /** * Created by ningpeng on 16/11/30. * */ public abstract class BaseRecyAdapter extends RecyclerView.Adapter implements View.OnClickListener { public Context mContext; public int layoutId; private OnItemClickListener mOnItemClickListener = null; public BaseRecyAdapter(Context context, int layoutId) { this.mContext = context; this.layoutId = layoutId; } public void showToast(String s){ Toast.makeText(mContext, s, Toast.LENGTH_SHORT).show(); } public View onBaseCreateViewHolder(ViewGroup parent, Context context, int layoutId){ View view = LayoutInflater.from(context).inflate(layoutId,parent,false); return view; } @Override public MYViewholder onCreateViewHolder(ViewGroup parent, int viewType) { View view = onBaseCreateViewHolder(parent,mContext,layoutId); MYViewholder myViewholder = new MYViewholder(view); myViewholder.setIsRecyclable(setRecyclable()); view.setOnClickListener(this); return myViewholder; } @Override public void onBindViewHolder(MYViewholder holder, int position, List payloads) { super.onBindViewHolder(holder, position, payloads); holder.itemView.setTag(position); onBindViewHolder(holder,position); } @Override public abstract void onBindViewHolder(MYViewholder holder, int position); @Override public abstract int getItemCount(); @Override public void onClick(View v) { if (mOnItemClickListener != null) { mOnItemClickListener.onItemClick(v,(int)v.getTag()); } } public class MYViewholder extends BaseViewHolder { public MYViewholder(View view) { super(view); } } /***** * * 必要的传入参数 * ***/ public abstract boolean setRecyclable(); public interface OnItemClickListener { void onItemClick(View view, int position); } public void setOnItemClickListener(OnItemClickListener listener) { this.mOnItemClickListener = listener; } }