一、RecyclerView的由来
在Android5.0以前,在展示大量数据时,通常采用ListView控件,以纵向的方式呈现。但是在Android5.0开始,谷歌公司提供了一个供大量数据展示的新控件RecyclerView,来代替传统的ListView,使用更加灵活、简单,而且RecyclerView展现出了非常好的可扩展性。RecyclerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能。
同时,RecyclerView也并非完全的替代ListView,从ListView未被标注@Deprecated可知,二者使用的场景有不同的地方。与ListView相比,RecyclerView具有以下优点:
1、RecyclerView封装了ViewHolder的回收复用,省略了convertView.setTag(holder)和convertView.getTag()这些步骤,写起来更加简单
2、引入了布局管理器,来管理item的显示方式,横向、纵向、瀑布流方式
3、可设置item的间隔样式(可绘制),通过继承RecyclerView的ItemDecoration这个类,然后针对自己的业务需求去书写代码。
4、可以控制item增删的动画,可以通过ItemAnimator这个类进行控制。当然针对增删的动画,RecyclerView有其自己默认的实现
二、RecyclerView的使用
1、由于RecyclerView是support-V7包中的组件,在使用时要先引入(以AndroidStudio为例)
(1)新建一个项目,打开File--->Project Structure,如下图继续:
(2)点击上图2的加号后,选1(Library Dependency),在输入框中输入recyclerview,点击搜索,如下图:
选中第一项androidx.recyclerview,点击OK,则成功引入依赖了。
2、(1)在布局文件中引入,要指明详细出处
(2) 新建item的布局文件和实体对象类
(3)创建适配器adapter,为RecyclerView提供数据。
如上图:
a、创建adapter类:适配器继承了RecyclerView.Adapter<ViewHolder>
b、创建ViewHolder:在adapter类中新建了一个继承RecyclerView.ViewHolder的静态内部类
c、实现了3个方法:
onCreateViewHolder():在该方法中为每个item inflater出一个view,然后把view封装在ViewHolder中
onBindViewHolder():为每一个item渲染数据
getItemCount():item的数量
3、在activity中设置RecyclerView:
由上图可看到:
(1) 对RecyclerView的声明
(2)布局管理器:LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManager(瀑布流布局管理器)
LinearLayoutManager:setOrientation(),设置横向或纵向滑动
GridLayoutManager: 注意参数(列的个数)
StaggeredGridLayoutManager:这个大家有兴趣了写写看
以上浅谈了一下RecyclerView的由来、优点及用法,仅供大家学习参考。