1 package com.example.recyclerviewdemo;
 2  
 3 import android.support.v7.widget.RecyclerView;
 4 import android.util.Log;
 5 import android.view.LayoutInflater;
 6 import android.view.View;
 7 import android.view.ViewGroup;
 8 import android.widget.TextView;
 9  
10 public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> implements View.OnClickListener{
11     private  String[]  datas;
12     public MyAdapter(String[] datas) {
13         this.datas = datas;
14     }
15     private OnRecyclerViewItemClickListener mOnItemClickListener = null;
16      
17     //define interface
18     public static interface OnRecyclerViewItemClickListener {
19         void onItemClick(View view , String data);
20     }
21      
22     @Override
23     public ViewHolder onCreateViewHolder(ViewGroup viewGroup,  int viewType) {
24         View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
25         ViewHolder vh = new ViewHolder(view);
26         //将创建的View注册点击事件
27         view.setOnClickListener(this);
28         return vh;
29     }
30      
31     @Override
32     public void onBindViewHolder(ViewHolder viewHolder,  int position) {
33         viewHolder.mTextView.setText(datas[position]);
34         //将数据保存在itemView的Tag中,以便点击时进行获取
35         viewHolder.itemView.setTag(datas[position]);
36     }
37   
38     @Override
39     public void onClick(View v) {
40         if (mOnItemClickListener != null) {
41             //注意这里使用getTag方法获取数据
42             mOnItemClickListener.onItemClick(v,(String)v.getTag());
43         }
44     }
45  
46     public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
47         this.mOnItemClickListener = listener;
48     }
49  
50      
51     //获取数据的数量
52     @Override
53     public int getItemCount() {
54         return datas.length;
55     }
56     //自定义的ViewHolder,持有每个Item的的所有界面元素
57     public static class ViewHolder extends RecyclerView.ViewHolder {
58         public TextView mTextView;
59         public ViewHolder(View view){
60         super(view);
61             mTextView = (TextView) view.findViewById(R.id.text);
62         }
63     }
64 }
adapter

相关文章: