博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android之RecyclerView篇
阅读量:2145 次
发布时间:2019-04-30

本文共 1726 字,大约阅读时间需要 5 分钟。

1.RecyclerView是什么?

  从Android 5.0开始,谷歌公司推出了RecylerView控件,当看到RecylerView这个新控件的时候,大部分人会首先发出一个疑问,recylerview是什么?为什么会有recylerview也就是说recylerview的优点是什么?recylerview怎么用?等等,下面我们将深入解析recylerview。

  RecyclerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,这一点从它的名字Recyclerview即回收view也可以看出。看到这也许有人会问,不是已经有ListView了吗,为什么还要RecyclerView呢?这就牵扯到第二个问题了。

RecyclerView的优点是:

根据官方的介绍RecyclerView是ListView的升级版,既然如此那RecyclerView必然有它的优点,现就RecylerView相对于ListView的优点罗列如下:

RecyclerView封装了viewholder的回收复用,也就是说RecyclerView标准化了ViewHolder,编写Adapter面向的是ViewHolder而不再是View了,复用的逻辑被封装了,写起来更加简单。

提供了一种插拔式的体验,高度的解耦,异常的灵活,针对一个Item的显示RecyclerView专门抽取出了相应的类,来控制Item的显示,使其的扩展性非常强。例如:你想控制横向或者纵向滑动列表效果可以通过LinearLayoutManager这个类来进行控制(与GridView效果对应的是GridLayoutManager,与瀑布流对应的还StaggeredGridLayoutManager等),也就是说RecyclerView不再拘泥于ListView的线性展示方式,它也可以实现GridView的效果等多种效果。你想控制Item的分隔线,可以通过继承RecyclerView的ItemDecoration这个类,然后针对自己的业务需求去抒写代码。
可以控制Item增删的动画,可以通过ItemAnimator这个类进行控制,当然针对增删的动画,RecyclerView有其自己默认的实现。
2.RecyclerView的布局管理器&适配器
2.1 RecyclerView的布局管理器
  RecyclerView的布局管理器是什么东东,我们知道ListView它只能让Item呈现线性排列,并不能一排好几个,或者参差不齐交错排列,因此RecyclerView可以做到,怎么做的呢?这跟RecyclerView的布局管理器有关,RecyclerView的布局管理器分为三种,第一种就是和ListView一样能让Item呈线性排列的线性布局管理器,而且还可以选择垂直方向或者水平方向。第二种就是网格布局管理器,这种是比较常见和常用的布局管理器,把数据整整齐齐的想网格一样的把数据显示出来。第三种就是瀑布流布局管理器,根据名字就可以知道它的作用就是让Item像瀑布一样排列。详细介绍点击以下传送门:

线性布局管理器(LinearLayoutManager)

网格布局管理器(GridLayoutManager)

瀑布流布局管理器(StaggeredLayouManager)

https://www.jianshu.com/p/626a082bf569

https://www.jianshu.com/p/12ec590f6c76

2.2 RecyclerView的适配器

https://blog.csdn.net/Mr_QiuL/article/details/52213547

3.RecyclerView源码分析

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2016/0307/4032.html

4.RecyclerView&ListView区别

https://www.jianshu.com/p/f592f3715ae2

你可能感兴趣的文章
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>
Chrome开发者工具
查看>>
【LEETCODE】102-Binary Tree Level Order Traversal
查看>>
【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
查看>>
【LEETCODE】237-Delete Node in a Linked List
查看>>
【LEETCODE】234-Palindrome Linked List
查看>>
【LEETCODE】217-Contains Duplicate
查看>>
【LEETCODE】310-Minimum Height Trees
查看>>
【LEETCODE】207-Course Schedule
查看>>
【LEETCODE】202-Happy Number
查看>>
和机器学习和计算机视觉相关的数学
查看>>
十个值得一试的开源深度学习框架
查看>>
【LEETCODE】240-Search a 2D Matrix II
查看>>
【LEETCODE】53-Maximum Subarray
查看>>
【LEETCODE】215-Kth Largest Element in an Array
查看>>
【LEETCODE】241-Different Ways to Add Parentheses
查看>>
【LEETCODE】312-Burst Balloons
查看>>