先翻译一篇高大上的文章
原文在这里
第一眼看Android的RecyclerView2014年8月14日,Wolfram Rittmeyer
在今年的谷歌I/O大会,谷歌发布了即将到来的Android版本,也就是开发者预览版。较以前的版本,有一个较大的进步,我真的很喜欢谷歌这样做。我想,我们作为开发者和消费者都会得益于谷歌这一决定。
这部分的预览包括俩个view:RecyclerView和 CardView。这里给你一篇文章介绍RecyclerView,这里有许多内部类和接口,他们如何交互,以及如何使用它们。
让我从一个好消息开始介绍:RecyclerView是支持库的一部分。所以你现在可以使用它。OK:你可以用它直到它被抛弃。所以更好的熟悉它
截图和视频显示结束的时候,这篇文章的示例项目的行动。你能在github上找到这个 示例。记住,RecyclerViewAPI还没有最终确定。谷歌仍可能改变事情,将样品当他们发布最终版本的Android L
这个名字为什么叫RecyclerView ?
这就是在在Android L 预览版中对RecyclerView 的描述: 一个灵活的控件用于在有限的窗口中显示大数据集。
所以,当你的项目中有多个同类的视图且不能在用户设备上同时显示时,RecyclerView 就是一个合适的控件。比如,联系人列表,用户列表,音乐文件列表等等。用户上下滑动看到更多的条目,同时离开屏幕时 回收和重用。当用户滑动某条目不可见时,这个条目的视图就会被回收,当这个条目重新可见时就会被重用。
下面的屏幕截图是示例项目的说明:左边的图片是示例项目刚启动的时候,当你向上滑动的时候,一些视图 被合理的回收,比如右边图片的红色区域,俩个不可见的视图,回收器把它们放到一个列表里,必要的时候会被 重用。
视图的回收是非常有用的。你不要重新引用布局使他 节省了cpu资源,同时由于不需要保存大量的不可见视图也 节省了内存。
现在,你可能会说:这不是一个新的概念,早就有了。你说的是正确的,我们已经使用listview很长时间,就有这样的概念。回收视图这个感念本来就不是一个新的概念。但是,你以前 用的listview的外貌,回收,以及其他的所有都是紧密耦合的,谷歌现在的是一个更好的,这就是谷歌开发一个新的RecyclerView的意义。我真的很喜欢谷歌的这种方法。
RecyclerView不关心视图效果
listview是紧密耦合的,谷歌现在采取了一种新的方法,RecyclerView自己本身自己并不关心视图效果,不关心正确位置的元素,不关心任何条目以及任何条目的外观。夸大点来讲,这就是recyclerview的命名的由来。
任何关于布局,绘画的操作,任何跟设置数据集有关的操作,都会交给一个类似插件的类来处理。这样就是使这个新 Recyclerview的API非常灵活。你想要一个布局,使用LayoutManager,你想要不同的动画效果,使用ItemAnimator 等等。
这里有一些用于展示数据的重要类,都是RecyclerView的内部类:
Class | Usage |
---|---|
Adapter | Wraps the data set and creates views for individual items 包装数据集并为每个单独的条目创建视图 |
ViewHolder | Holds all sub views that depend on the current item’s data 为当前数据集保存子视图 |
LayoutManager | Places items within the available area 把条目视图放到可用的区域 |
ItemDecoration | Draws decorations around or on top of each item’s view 在每个视图上绘制装饰效果 |
ItemAnimator | Animates items when they are added, removed or reordered 当条目被添加,移除,重新排序时添加动画效果 |