解决 RecyclerView条目点击事件,分享自定义adapter

废话不多说直接贴代码
package com.yl.ylnews.adapter;

import android.app.Activity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.yl.ylnews.R;
import com.yl.ylnews.bean.TopNews;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> implements View.OnClickListener {
    private List<T> dataBeanList;
    private Activity mActivity;

    public MyAdapter(List<T> dataBeanList, Activity mActivity) {
        this.dataBeanList = dataBeanList;
        this.mActivity = mActivity;
    }

    private OnRecyclerViewItemClickListener mOnItemClickListener = null;

    //定义接口
    public static interface OnRecyclerViewItemClickListener {
        void onItemClick(View view, T data);
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_list_news, viewGroup, false);
        ViewHolder vh = new ViewHolder(view);
        //将创建的View注册点击事件
        view.setOnClickListener(this);
        return vh;
    }

    @Override
    public void onBindViewHolder(ViewHolder viewHolder, int position) {
        // viewHolder.mTextView.setText(datas[position]);
        T dataBean = dataBeanList.get(position);
        String thumbnail_pic_s = dataBean.getThumbnail_pic_s();
        Glide.with(mActivity).load(thumbnail_pic_s).into(viewHolder.ivIcon);

        viewHolder.tvAuthorName.setText(dataBean.getAuthor_name());
        viewHolder.tvDate.setText(dataBean.getDate());
        viewHolder.tvNewsTittle.setText(dataBean.getTitle());
        //将数据保存在itemView的Tag中,以便点击时进行获取
        viewHolder.itemView.setTag(dataBean);
    }

    @Override
    public void onClick(View v) {
        if (mOnItemClickListener != null) {
            //注意这里使用getTag方法获取数据
            mOnItemClickListener.onItemClick(v, (T) v.getTag());
        }
    }

    public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
        this.mOnItemClickListener = listener;
    }


    //获取数据的数量
    @Override
    public int getItemCount() {
        return dataBeanList.size();
    }
   
    //自定义的ViewHolder,持有每个Item的的所有界面元素,
    //使用butterknife生成,不了解的可用自己手写viewholder
    static  class ViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.iv_icon)
        ImageView ivIcon;
        @BindView(R.id.tv_author_name)
        TextView tvAuthorName;
        @BindView(R.id.tv_date)
        TextView tvDate;
        @BindView(R.id.tv_news_tittle)
        TextView tvNewsTittle;

        ViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值