RecycleView点击事件

本文详细介绍如何在Android的RecyclerView中实现自定义点击与长按监听功能,通过创建Adapter内的接口,实现item的点击和长按事件处理,包括数据删除和通知适配器更新。

1.在Adapter里面自定义一个接口,然后在onBindViewHolder中调用这个方法

@Override
  public void onBindViewHolder(MainActivity.VH holder, final int position) {
    holder.tv.setText(mList.get(position));
 
    //自己做item点击
    holder.itemView.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        if (onItemClickListener != null)
          onItemClickListener.onClick(position);
      }
    });
    holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
      @Override
      public boolean onLongClick(View v) {
        if (onItemLongClickListener != null)
          onItemLongClickListener.onLongClick(position);
        //返回false会在长安结束后继续点击
        return true;
      }
    });
  }
 

public interface OnItemClickListener {
    void onClick(int position);
  }
 
  OnItemClickListener onItemClickListener;
 
 
  public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
    this.onItemClickListener = onItemClickListener;
  }
 
  public interface OnItemLongClickListener {
    void onLongClick(int position);
  }
 
  OnItemLongClickListener onItemLongClickListener;
 
  public void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener) {
    this.onItemLongClickListener = onItemLongClickListener;
  }
}

2.在MainActivity中

adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
      @Override
      public void onClick(int position) {
        Toast.makeText(getBaseContext(), "点击的是" + position + "的itemClick", Toast.LENGTH_SHORT).show();
      }
    });
    adapter.setOnItemLongClickListener(new MyAdapter.OnItemLongClickListener() {
      @Override
      public void onLongClick(int position) {
        //长按删除数据
        mList.remove(position);
        adapter.notifyDataSetChanged();
      }
    });
    rv.setAdapter(adapter);
 
    //布局管理器
    rv.setLayoutManager(new StaggeredGridLayoutManager(5, StaggeredGridLayoutManager.VERTICAL));
  }
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值