Android - RecyclerView系列之点击事件

作者: Allens_Jiang | 来源:发表于2018-01-04 16:31 被阅读964次
    老婆保佑,代码无BUG

    前言

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


    效果图来一波

    原理

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

    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系列之点击事件

        本文链接:https://www.haomeiwen.com/subject/btwrnxtx.html