RecyclerView添加item点击事件

通过接口回调的方式:
1.在Adapter中定义点击的接口(也可以不用内部类的形式,单独写一个);

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

2.在recyclerview的adapter中实现点击方法;

package com.cmcc.attendancesystem.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.cmcc.attendancesystem.R;
import com.cmcc.attendancesystem.bean.AuditorBean;

import java.util.List;

/**
 * Created by 38640 on 2018/3/16.
 */

public class AuditorAdapter extends RecyclerView.Adapter<AuditorAdapter.MyViewHolder> {

    private Context mContext;
    private List<AuditorBean> mListData;

    public AuditorAdapter(Context context, List<AuditorBean> listData) {
        this.mContext = context;
        this.mListData = listData;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(mContext).inflate(R.layout.item_select_auditor, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, int position) {
        AuditorBean auditorBean = mListData.get(position);
        holder.nameTv.setText(auditorBean.getName());

        View itemView = ((LinearLayout) holder.itemView).getChildAt(0);

        if (mOnItemClickListener != null) {
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position = holder.getLayoutPosition();
                    mOnItemClickListener.onItemClick(holder.itemView, position);
                }
            });
        }
    }

    @Override
    public int getItemCount() {
        if (mListData != null) {
            return mListData.size();
        } else {
            return 0;
        }
    }

    class MyViewHolder extends RecyclerView.ViewHolder {


        TextView nameTv;

        public MyViewHolder(View itemView) {
            super(itemView);
            nameTv = itemView.findViewById(R.id.tv_name);
        }
    }

    public interface OnItemClickListener {
        void onItemClick(View view, int position);
    }
    private OnItemClickListener mOnItemClickListener;//声明接口

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        mOnItemClickListener = onItemClickListener;
    }
}

3.在activity中使用;

 auditorAdapter = new AuditorAdapter(this, listData);
 auditorAdapter.setOnItemClickListener(new AuditorAdapter.OnItemClickListener() {

            @Override
            public void onItemClick(View view, int position) {
                LogUtils.i(TAG, "点击了:" + position);
            }
        });
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,932评论 25 709
  • 在开发中,RecyclerView以其灵活的布局等特性逐渐替代了ListView和GridView。但是Recyc...
    曾经的追风少年阅读 3,367评论 0 3
  • 【Android 控件 RecyclerView】 概述 RecyclerView是什么 从Android 5.0...
    Rtia阅读 307,994评论 27 439
  • 恍惚间,透着暗黄灯光下的嘴角,微微地在扬起,没有一点修饰,自然而纯净。那是我第一次看见你笑,笑得像无忧无虑的模样。...
    千雨寻阳阅读 181评论 0 0
  • 你还记得吗? 我们相遇的那年。 我们在雨中许下了诺言。 “紫祺,我喜欢你,你愿意当我女朋友...
    杨樱夏阅读 392评论 0 1