Recyclerview的Item支持可点击可长安类似ListViewOnItemClickListener

来源:互联网 发布:淘宝商家资质 编辑:程序博客网 时间:2024/06/10 19:06
/** * 可点击的Adapter,通过为item的view视图添加点击事件,并向外暴露借口,实现ListView的item的点击效果 */public abstract class BaseClickableAdapter<B, H extends RecyclerView.ViewHolder> extends        RecyclerView.Adapter<H> implements View.OnClickListener, View.OnLongClickListener {    protected RecyclerView mRecyclerView;    protected OnRecyclerViewItemClickListener mOnItemClickListener;    protected OnRecyclerViewItemLongClickListener mOnItemLongClickListener;    public void setOnItemLongClickListener(OnRecyclerViewItemLongClickListener mOnItemLongClickListener) {        this.mOnItemLongClickListener = mOnItemLongClickListener;    }    protected ArrayList<B> mList;    protected Context mContext;    public BaseClickableAdapter(Context context, ArrayList<B> list, RecyclerView recyclerView) {        mContext = context;        mRecyclerView = recyclerView;        mList = list;    }    public void setOnItemClickListener(OnRecyclerViewItemClickListener onItemClickListener) {        mOnItemClickListener = onItemClickListener;    }    @Override    public void onClick(View v) {        if (mOnItemClickListener != null) {            int position = mRecyclerView.getChildLayoutPosition(v);            B bean =  mList.get(position);            mOnItemClickListener.onItemClick(v , bean, position);        }    }    @Override    public boolean onLongClick(View v) {        if (mOnItemLongClickListener != null) {            int position = mRecyclerView.getChildLayoutPosition(v);            B bean =  mList.get(position);            mOnItemLongClickListener.onItemLongClick(v , bean, position);        }        return true;    }    public void removeItem(int position) {        mList.remove(position);        this.notifyItemRemoved(position);    }    @Override    public int getItemCount() {        return mList.size();    }    public interface OnRecyclerViewItemClickListener<T> {        void onItemClick(View view , T data, int position);    }    public interface OnRecyclerViewItemLongClickListener<T> {        void onItemLongClick(View view , T data, int position);    }}

0 0
原创粉丝点击