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

来源:互联网 发布:qt编程视频教程 编辑:程序博客网 时间:2024/06/05 02:56
废话不多说直接贴代码
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 0
原创粉丝点击