Recyclerview如何实现item点击事件

2018-08-31  本文已影响0人  橙果子

当你想在Activity中处理Aapter中的数据和点击事件时,还得将Activity中的数据传到Adapter中, 只要在Adapter中写一个回调接口,这样就能直接在Acitivity中处理了,不用来回传接数据了.

1.在Adapter类中定义一个接口,例如就是这个 MyViewHolerClicks

 public interface MyViewHolerClicks {
        //item的回调方法
        void onItemClick(int position);
        //删除按钮的回调方法
        void deleteClick(int position);
    }

2..在Adapter类将MyViewHolerClicks 设置为set方法,安卓快捷键alt+insert直接选择 setter

 public MyViewHolerClicks myViewHolerClicks;

    /**
     * 供外部Activity调用的
     *
     * @param myViewHolerClicks
     */
    public void setMyViewHolerClicks(MyViewHolerClicks myViewHolerClicks) {
        this.myViewHolerClicks = myViewHolerClicks;
    }

3..在Adapter类的onBindViewHolder方法中设置点击事件

@Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        //绑定view的方法
        if (myViewHolerClicks != null) {
            holder.imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    myViewHolerClicks.onItemClick(position);
                }
            });

            holder.deleteImg.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    myViewHolerClicks.deleteClick(position);
                }
            });
        }
    }

4.在你要使用的Activity界面初始化Adapter中的接口,实现接口中的方法

/**
     * Adapter中详情点击事件
     * 删除按钮的点击事件
     */
    UploadProductionDisplayAdapter.MyViewHolerClicks myViewHolerClicks = new UploadProductionDisplayAdapter.MyViewHolerClicks() {
        /**
         * 每个item的点击事件
         */
        @Override
        public void onItemClick(int position) {
           
        }
       /**
         * 每个item的中删除按钮的点击事件
         */
        @Override
        public void deleteClick(int position) {
            //根据position删除展示列表的数据
          
        }
    };

4.在你要使用的Activity界面

//初始化Adapter
TestAdatper adpter=new TestAdapter(this);
recyclerview.setAdapter(adpter);
adpter.setMyViewHolerClicks(myViewHolerClicks);
上一篇下一篇

猜你喜欢

热点阅读