RecyclerView的应用

1. 在build.gradle中添加依赖

    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.github.bumptech.glide:glide:3.7.0'

 

2. 在xml中添加recyclerview布局

1     <android.support.v7.widget.RecyclerView
2         android:id="@+id/rv_list"
3         android:layout_width="match_parent"
4         android:layout_height="match_parent"
5         android:layout_marginBottom="55dp">
6     </android.support.v7.widget.RecyclerView>

 

3. CourseAdapter适配器

 1 public class CourseAdapter extends RecyclerView.Adapter<CourseAdapter.MyViewHolder> {
 2 
 3     private Context mContext;
 4     private List<CourseBean> cbl;
 5 
 6     //通过构造获取上下文
 7     public CourseAdapter(Context context) {
 8         mContext = context;
 9     }
10 
11     /**
12      * 设置数据更新
13      *
14      * @param cbl
15      */
16     public void setData(List<CourseBean>cbl) {
17         this.cbl = cbl;
18         notifyDataSetChanged();
19     }
20     /**
21      * 创建ViewHolder
22      * @param parent
23      * @param viewType
24      * @return
25      */
26     @Override
27     public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
28         View view = LayoutInflater.from(mContext).inflate(R.layout.course_list_item,parent, false);
29         MyViewHolder holder = new MyViewHolder(view);
30         return holder;
31     }
32 
33     /**
34      * 绑定ViewHolder
35      * @param holder
36      * @param position
37      */
38     @Override
39     public void onBindViewHolder(final MyViewHolder holder, final int position) {
40         //设置数据
41         holder.tv_title.setText(cbl.get(position).title);
42         holder.tv_img_title.setText(cbl.get(position).imgTitle);
43         //获取本地图片
44         //int id = mContext.getResources().getIdentifier("chapter_"+(position+1)+"_icon","drawable",mContext.getPackageName());
45         //holder.iv_img.setImageResource(id);
46         //Glide加载网络图片
47         String url = "http://10.200.173.18:8080/resource/chapter_"+(position+1)+"_icon.png";
48         Glide.with(mContext).load(url).into(holder.iv_img);
49 
50         holder.iv_img.setOnClickListener(new View.OnClickListener() {
51             @Override
52             public void onClick(View view) {
53                 Intent intent = new Intent(mContext, VideoListActivity.class);
54                 intent.putExtra("id",cbl.get(position).id);
55                 intent.putExtra("intro",cbl.get(position).intro);
56                 mContext.startActivity(intent);
57             }
58         });
59     }
60 
61     /**
62      * 获取item 总数
63      * @return
64      */
65     @Override
66     public int getItemCount() {
67         return cbl == null ? 0 : cbl.size();
68     }
69     
70     class MyViewHolder extends RecyclerView.ViewHolder {
71 
72         TextView tv_img_title, tv_title;
73         ImageView iv_img;
74 
75         public MyViewHolder(View itemView) {
76             super(itemView);
77 
78             tv_title = (TextView) itemView.findViewById(R.id.tv_title);
79             tv_img_title = (TextView) itemView.findViewById(R.id.tv_img_title);
80             iv_img = (ImageView) itemView.findViewById(R.id.iv_img);
81         }
82     }
83 }

 

4. View进行数据显示

 1     //初始化recyclerview布局    
 2     rv_list = (RecyclerView) mCurrentView.findViewById(R.id.rv_list);
 3     //设置为2列的表格布局
 4     rv_list.setLayoutManager(new GridLayoutManager(mContext,2));
 5     //创建适配器
 6     adapter = new CourseAdapter(mContext);
 7     //将数据添加到适配器
 8     adapter.setData(cbl);
 9     //将适配的数据添加到recyclerview布局中
10     rv_list.setAdapter(adapter);

 

posted @ 2019-05-28 22:05  笺笙  阅读(176)  评论(0编辑  收藏  举报