Android开发之RecyclerView实现点击事件和长按事件

经过了上一节的学习,相信大家对强大的RecyclerView有个初步的认识,但是比较蛋疼的是RecyclerView竟然不支持点击事件长按事件,接下来就有我为大家用一种比较简单的方法来实现点击事件和长按事件。

先看效果图:



---------------------------------------------华丽的分割线-----------------------------------------------------------------------

实现起来其实也是很容易的,在adapter里面写一个监听,在Adapter对象上实现回调就可以了。

接下来开始撸代码实现:

 private OnItemClickListener mOnItemClickListener;
   
    public void setOnItemClickListener(OnItemClickListener clickListener) {
        this.mOnItemClickListener = clickListener;
    }
    
    public interface OnItemClickListener {
        void onItemClick(View view, int position);
    }

在bindview里面实现view的点击事件(切记mOnItemClickListener一定要判断是否为空):

 @Override
    public void onBindViewHolder(MyRecyclerAdapter.MyViewHolder holder, final int position) {
        holder.tv.setText(mList.get(position));
        if (mOnItemClickListener != null) {
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mOnItemClickListener.onItemClick(v, position);
                }
            });
        }
    }


然后在Adapter对象上添加监听回调:
  mAdapter.setOnItemClickListener(new MyRecyclerAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Toast.makeText(MainActivity.this, "你点击了" + position + "个", Toast.LENGTH_SHORT).show();
            }
        });
点击事件到此完成!

---------------------------------------------华丽的分割线-----------------------------------------------------------------------

接下来快速完成长按事件:

    private OnItemLongClickListener mOnItemLongClickListener;
    
    public void setOnItemLongClickListener(OnItemLongClickListener longClickListener) {
        this.mOnItemLongClickListener = longClickListener;
    }
    
    public interface OnItemLongClickListener {
        void onItemLongClick(View view, int position);
    }
同样在bindView里面实现长按事件

@Override
    public void onBindViewHolder(MyRecyclerAdapter.MyViewHolder holder, final int position) {
        holder.tv.setText(mList.get(position));
        if (mOnItemClickListener != null) {
            holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    mOnItemLongClickListener.onItemLongClick(v, position);
                    return true;//默认返回false
                }
            });
        }
    }
在Adapter对象上添加监听回调:
mAdapter.setOnItemLongClickListener(new MyRecyclerAdapter.OnItemLongClickListener() {
            @Override
            public void onItemLongClick(View view, int position) {
                Toast.makeText(MainActivity.this, "你长按" + position + "个", Toast.LENGTH_SHORT).show();
            }
        });

大功告成!!!
--------------------------------------------- 华丽的分割线-----------------------------------------------------------------------
下一节继续给大家带来RecyclerView在使用上的小技巧。。。


  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等待着冬天的风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值