这是我参与【第四届青训营】笔记创作活动的第七天
一、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布局设计
2.定义电影实体类
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