Android - RecyclerView系列之点击事件

老婆保佑,代码无BUG

前言

小白篇,哈哈,我也是小白,慢慢积累


Android - RecyclerView系列之点击事件_第1张图片
效果图来一波

原理

就是接口回调,可以看到这是我们平时使用的 点击事件,仿照他去写

mBtn.setOnClickListener(new View.OnClickListener() {
    @Override
     public void onClick(View v) {
     }
});

实现

(1) 在Recycler的适配器中定义接口,如下


    //第一步 定义接口
    public interface OnItemClickListener {
        void onClick(int position);
    }

    private OnItemClickListener listener;

    //第二步, 写一个公共的方法
    public void setOnItemClickListener(OnItemClickListener listener) {
        this.listener = listener;
    }




    public interface OnItemLongClickListener {
        void onClick(int position);
    }

    private OnItemLongClickListener longClickListener;

    public void setOnItemLongClickListener(OnItemLongClickListener longClickListener) {
        this.longClickListener = longClickListener;
    }

(2) 在适配器的onBindViewHolder方法中,实现接口回调,如下

 @Override
    public void onBindViewHolder(ViewHolder holder, final int position) {        
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (listener != null) {
                    listener.onClick(position);
                }
            }
        });

        holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                if (longClickListener != null) {
                    longClickListener.onClick(position);
                }
                return true;
            }
        });
    }

(3) 如何使用

使用适配器的对象,调用其内部自己写的方法

        myAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
            @Override
            public void onClick(int position) {
                Toast.makeText(MainActivity.this, "click " + position, Toast.LENGTH_SHORT).show();
            }
        });


        myAdapter.setOnItemLongClickListener(new MyAdapter.OnItemLongClickListener() {
            @Override
            public void onClick(int position) {
                Toast.makeText(MainActivity.this, "long click " + position, Toast.LENGTH_SHORT).show();
            }
        });

你可能感兴趣的:(Android - RecyclerView系列之点击事件)