Recyclerview添加点击监听功能

本文介绍了如何在RecyclerView中添加点击监听功能。通过在Adapter中创建内部监听接口,并提供设置监听的方法,实现在RecyclerView中处理点击事件。具体实现包括定义接口、设置点击方法、在onBindView中判断接口是否为空,以及在Recyclerview中调用接口方法来响应点击事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们都知道RecyclerView不像Listview那样搭配有点击和长按监听,但是这并难不倒灵活的Recyclerview。

实现点击监听的思路大概是这样:

在Recyclerview相关的Adapter里面,写一个内部监听接口,接口里面写一个点击方法。然后在Adapter定义一个空的监听接口,另外在Adapter里面写一个点击设置公共方法,这个方法是供Recyclerview调用的,也就是,如果需要实现点击功能,那么Recyclerview就要调用这个方法,所以这个方法需要一个参数,这个参数正是监听接口本身,这样我们就可以在传入这个参数的时候new一个接口去实现里面的点击方法了。当我们实现这个点击接口后,这个接口是需要赋给Adapter里面定义一个那个空接口的,这样我们就可以在onBindView里面判断这个空接口了,如果接口为空,那我们不处理事件,如果接口不为空,那么我们就处理我们想要做的事,比如点击效果。需要注意的是,在Recyclerview实现监听接口的时候,会在Adapter中创建接口,并且判断接口是否为空,然后实现事件处理,以及接口方法的调用,如果在adapter中不进行监听接口方法的调用,那么recyclerview里面的点击处理事件是不能响应的。

代码如下:

public class RcAdapter extends RecyclerView.Adapter<RcAdapter.MyViewHolder> {
    private LayoutInflater layoutInflater;
    private String[] serviceType;
    private Context context;
    private OnItemClickListener onItemClickListener = null;
    public RcAdapter(Context contexts,String[] serviceType){
        Log.e("eee", "eww");
        this.serviceType = serviceType;
        this.context = contexts;
        layoutInflater = LayoutInflater.from(this.context);
    }
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = layoutInflater.inflate(R.layout.item_service_type,parent,false);
        MyViewHolder myViewHolder = new MyViewHolder(view);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        holder.typeTv.setText(serviceType[position]);
    }

    @Override
    public int getItemCount() {
            Log.e("eee",serviceType.length + "");

        return serviceType.length;
    }
    public void setOnItemClickListener(OnItemClickListener onItemClickListener){
        this.onItemClickListener = onItemClickListener;
    }

    public class MyViewHolder extends RecyclerView.ViewHolder{
        TextView typeTv;
        public MyViewHolder(View itemView) {
            super(itemView);
            typeTv = (TextView)itemView.findViewById(R.id.it_service_type_name);
        }
    }
    public interface OnItemClickListener{
        void onItemClick();
    }
}
其他的无关紧要的代码就自己写吧,世间没有完美的demo。。不过,后续我会上传到github里面,到时更新吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值