http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0327/2647.html

整理了一下RecyclerView的点击事件的实现方法:

效果图:


   首先在adapter 中定义接口,模拟ListView的OnItemClickListener:


    public interface OnRecyclerViewItemClickListener {
        void onItemClick(View view, int position);
    }


  声明一个这个接口的变量: private OnRecyclerViewItemClickListener onItemClickListener;

  在onCreateViewHolder()中为每个item添加点击事件

    public SecondAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
       inflater=LayoutInflater.from(parent.getContext());
        View view=inflater.inflate(R.layout.item,null);
        view.setOnClickListener(this);
        return new ViewHolder(view);
    }


   将点击事件转移给外面的调用者:

    @Override
    public void onClick(View view) {
        if (onItemClickListener != null) {
            //注意这里使用getTag方法获取数据
            onItemClickListener.onItemClick(view, (Integer) view.getTag());
        }
    }

 注意上面调用接口的onItemClick()中的v.getTag()方法,这需要在onBindViewHolder()方法中设置和item相关的数据

  @Override
    public void onBindViewHolder(final SecondAdapter.ViewHolder holder, final int position) {
        holder.name.setText(mlist.get(position));
        holder.itemView.setTag(mlist.get(position));
        if(onItemClickListener != null){
            holder.itemView.setOnClickListener(new View.OnClickListener() {


                @Override
                public void onClick(View v) {
                    onItemClickListener.onItemClick(holder.itemView, position);


                }
            });
        }
    }


最后暴露给外面的调用者,定义一个设置Listener的方法():


 public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
        this.onItemClickListener = listener;
    }


在Activity中使用:

   adapter.setOnItemClickListener(new SecondAdapter.OnRecyclerViewItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Toast.makeText(MethodTwo.this, mlist.get(position), Toast.LENGTH_SHORT).show();
            }
        });


代码传送门:http://download.csdn.net/detail/u010007428/9730762


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值