package cn.sinata.xldutils.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.recyclerview.widget.RecyclerView; import java.util.List; import cn.sinata.xldutils.adapter.util.ViewHolder; import cn.sinata.xldutils.widget.ProgressDialog; /** * * Created by LiaoXiang on 2015/11/4. */ public abstract class BaseRecyclerAdapter extends RecyclerView.Adapter { protected List mData; private int layoutId; protected Context mContext; private ProgressDialog dialog; public BaseRecyclerAdapter(List mData, int layoutId) { this.mData = mData; this.layoutId = layoutId; } /** * ItemClick的回调接口 * @author zhy * */ public interface OnItemClickListener { void onItemClick(View view, int position); } protected OnItemClickListener mOnItemClickListener; /** * 设置OnItemClickListener * @param mOnItemClickListener OnItemClickListener */ public void setOnItemClickListener(OnItemClickListener mOnItemClickListener) { this.mOnItemClickListener = mOnItemClickListener; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (layoutId <= 0) { layoutId = android.R.layout.simple_list_item_1; } mContext = parent.getContext(); LayoutInflater mInflater = LayoutInflater.from(mContext); View view = mInflater.inflate(layoutId, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder,int position) { initItemClickListener(holder,position); T t = mData.get(position); if (t != null) { onBind(position, t, holder); } } private void initItemClickListener(final ViewHolder holder ,final int position){ //如果设置了回调,则设置点击事件 holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mOnItemClickListener != null) { // Utils.systemErr(holder.getAdapterPosition()); mOnItemClickListener.onItemClick(holder.itemView, position); } } }); } @Override public int getItemCount() { return mData.size(); } /** * 绑定视图与数据 * * @param position 当前位置 * @param t 数据 * @param holder 视图绑定holder */ public abstract void onBind(int position, T t, ViewHolder holder); }