Android组件RecyclerView|青训营笔记

114 阅读3分钟

这是我参与【第四届青训营】笔记创作活动的第七天

一、RecyclerView介绍

–RecyclerView 是一个增强版的ListView (Android 5.0推出的),是support-v7包中的新组件(最低兼容到android 3.0版本)。

–被用来代替ListView 和 GridView 控件,并且能够实现瀑布流的布局。

–它更加高级并且更加灵活,可提供更为高效的回收复用机制,同时实现管理与视图的解耦合。

二、RecyclerView相对于ListView的优点

–可以使用布局管理器LayoutManager来管理RecyclerView的显示方式:水平、垂直、网络、网格交错布局;

–自定义item的分割条;

–可以控制item的添加和删除的动画,非常自由,可以自定义动画,配合具体场景,效果非常棒;

–可以动态的在指定位置添加和删除某一项,而列表不会回到顶部,动态的update列表数据;

–缺点:就是没有OnItemClickListenter(),需要自己在RecycleView内部自定义列表项的点击事件或则长按事件;

– 在Material Design中和CardView配合使用,显示效果非常突出。

三、RecyclerView 控件的使用步骤:

–1.添加 RecyclerView 至布局文件

–在使用 RecyclerView 控件前,需要将其添加到工程中。我们可以在控件面板中搜索RecyclerView 关键字找到 RecyclerView 控件。将其拖入布局文件,RecyclerView 就会加入当前工程

–2.自定义 RecyclerView.Adapter 适配器

–要创建一个 Adapter 类,该类继承于 RecyclerView.Adapter,其中 VH 是我们在 Adapter 类中创建的一个继承于RecyclerView.ViewHolder 的静态内部类。

–该 Adapter 类主要有 3 个方法和 1 个自定义 ViewHolder 组成。

– onCreateViewHolder:创建 ViewHolder 并返回,后续 item 布局里控件都是从 ViewHolder中取出的。

– onBindViewHolder:通过方法提供 ViewHolder,将数据绑定到 ViewHolder。

–getItemCount:获取数据源总的条数。

–MyViewHolder:这是 RecyclerView.ViewHolder 的实现类,可用于初始化 item 布局中的子控件。需要注意的是,在这个类的构造方法中需要传递 item 布局的 View 给父类。

–3.RecyclerView 绑定数据适配器

//1.初始化控件

myrecyclerview = findViewById(R.id.myrecyclerview);

//2.设置 RecyclerView 布局管理器

myrecyclerview.setLayoutManager(new

LinearLayoutManager(MainActivity.this,LinearLayoutManager.VERTICAL,false));

//3.初始化数据适配器

myAdapter = new MyRecyclerAdapter(movies,MainActivity.this);

//4.设置动画,默认动画

myrecyclerview.setItemAnimator(new DefaultItemAnimator());

//5.设置适配器

myrecyclerview.setAdapter(myAdapter);

四、案例:使用RecyclerView开发我爱电影

需求描述:开发我爱电影APP,电影列表中每个电影显示电影名称及电影海报。

技术要点:使用RecyclerView实现电影列表。

步骤描述:

①UI布局设计

②定义电影实体类

③继承RecyclerView.Adapter实现适配器

④使用RecyclerView显示电影

1.UI布局设计

image-20220814115106496

image-20220814115112786

2.定义电影实体类

image-20220814115201627

3.自定义 RecyclerView.Adapter

①实现适配器MyRecyclerAdapter,继承RecyclerView.Adapter适配器。

②能够从构造方法中接收电影集合数据的传入。

③根据电影集合数据的数量确定getItemCount返回的数据个数,。

④定义MyViewHolder 内部类,持有item_movie.xml的电影名TextView控件的句柄和电影海报ImageView的句柄,方便统一管理数据绑定到RecyclerView上。

⑤在onCreateViewHolder方法中从item_movie.xml返回一个自定义的MyViewHolder。

⑥在onBindViewHolder将当前电影数据项填充到MyViewHolder的控件。

4.使用 RecyclerView 显示电影

①用电影名字数组titles 和头像图片资源id数组imgs初始化电影集合List。Model类Movie的一个实例保存一个电影名字和电影海报图片id。

②用findViewById获取myrecyclerview ,设置RecyclerView布局管理器和默认动画。

③用List和MainActivity的上下文创建适配器对象MyRecyclerAdapter。

通过RecyclerView 的setAdapter方法,为myrecyclerview加载MyRecyclerAdapter