RecyclerView的使用(三)——点击事件

RecyclerView的使用(三)——点击事件

一、创建自定义接口

public interface MyItemClickListener {
    public void onItemClick(View view, int postion);
}

二、在Adpater的static class ViewHolder中
1 implements View.OnClickListener接口
2 viewHodler构造方法中,加上接口类 传入自定义的接口对象
2 重写View.OnClickListener的onClick点击监听方法
3 在onClick点击监听方法中,用创建ViewHolder时传递过来的自定义接口的对象去调用自定义接口的方法 传入View和Position

public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        TextView myTitle;
        private MyItemClickListener mListener;
        public ViewHolder(View itemView,MyItemClickListener listener) {
            super(itemView);
            // 获取组件
            myTitle = itemView.findViewById(R.id.text_1);
            this.mListener = listener;
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            if(mListener != null){
                mListener.onItemClick(v,getPosition());
            }
        }
    }

三、在Adapter的onCreateViewHolder方法中,实例化viewholder时,传入建立的MyItemClickListener对象

private MyItemClickListener mItemClickListener;
//onCreateViewHolder中
// 实例化viewholder
ViewHolder viewHolder = new ViewHolder(v,mItemClickListener);

四、在Adpater类中 自定义一个方法 参数为MyItemClickListener对象 为了后面给Activity调用

 public void setOnItemClickListener(MyItemClickListener listener){
        this.mItemClickListener = listener;
    }

五、在Activity中
Activity类要implements MyItemClickListener

initData中:
就可以调用Adpater的setOnItemClickListener方法

this.mAdapter.setOnItemClickListener(this);

并且adpater的类型要为 自定义的Adapter的类型

  private CRMListAdapter mAdapter;

而不是

   private RecyclerView.Adapter mAdapter;

的类型


六、在Activity就可以实现具体的点击事件了
这里实现的是将position的值传给另一个界面

@Override
    public void onItemClick(View view, int position) {
        String thisPosition=String.valueOf(position);
        Intent intent = new Intent(MainActivity.this,ShowActivity.class);
        intent.putExtra("position", thisPosition);
        Log.i("thisPosition",thisPosition);
        startActivity(intent);
    }

大致思路:
先自定义点击接口,然后在Activity中,将ItemClickListener对象传给Adapter类,Adapter类在实例化ViewHolder时,传入ItemClickListener对象,然后View.OnClickListener作为ViewHolder的接口,为每个item设置单独的OnClick监听并调用接口的方法,在Activity中写接口的具体方法实现。


进阶:


一、若只有一个Adapter一个/多个 recyclerView,但是不同情况的Item界面和内容是不同的,并且点击事件的效果也不同。怎么设置点击效果


参考博客:
http://blog.csdn.net/guxiao1201/article/details/40423361

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值