RecyclerView (一) 基础知识
2016-04-19 14:13
330 查看
RecyclerView是什么?
RecyclerView是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式。它被作为ListView和GridView控件的继承者,在最新的support-V7版本中提供支持。在开发RecyclerView时充分考虑了扩展性,因此用它可以创建想到的任何种类的的布局。但在使用上也稍微有些不便。这就是Android——要完成一件事情总不是那么容易。
如果使用RecyclerView,你需要了解以下三个元素:
RecyclerView.Adapter
LayoutManager
ItemAnimator
RecyclerView.Adapter
RecyclerView包含了一种新型适配器。它与现在使用的适配器类似,但也稍有不同,例如它需要使用ViewHolder。使用时需要重写两 个主要方法:一个用来展现视图和它的持有者,而另一个用来把数据绑定到视图上。这么做的好处是,第一种方法只有当我们真正需要创建一个新视图时才被调用, 不需要检查它是否已经被回收。如果想要从适配器上添加或移除条目,需要明确通知适配器。这与先前的notifyDataSetChanged()方法稍微有些不同。
LayoutManager
这个类决定视图被放在画面中哪个位置,但这只是它的众多职责之一。它可以管理滚动和循环利用。LayoutManager只有一个叫做LinearLayoutManager的实现类,它有1500多行代码。但从这一点就可以看出它有多复杂。管理器可以模拟列表视图(包括横向和纵向),但没有页眉和页尾。
为LayoutManager编写子类不太适合新手,我们需要依靠社区来发掘RecyclerView的全部潜力。与这个例子一起,在短时间内我会上传一个GridView控件的实现。
我认为这背后的关键是要仿照LinearLayoutManager的代码创建一个BaseLayoutManager,并且基于此进行扩展。或许support-v7的最终版本会提供更多、更好的实现。
ItemAnimator
ItemAnimator会根据适配器上收到的通知动画显示视图组的修改。基本上,它会自动显示添加和移除条目动画。这也不是一个简单的类,但我们发现DefaultItemAnimator已经可以运行得很好了。RecyclerView设置
所以最后,如果想要初始化一个运行的RecyclerView,你需要做这样的事情:总结
RecyclerView确实是一个强大的视图,它为开发者提供了无限的扩展能力。学习曲线可能会非常陡峭。但我相信,不久Android社区就会发布LayoutManager超棒的实现。我在创建一个github仓库,在那里可以找到这个例子。它是我计划创建的一个扩展库的基础。你可以测试GridView的实现。欢迎各种形式的反馈。
Github上的RecyclerViewExtensions
相关文章推荐
- iptables实践之基础--进阶-实践应用全解析
- Java命令学习系列(四)——jstat
- ajax操作xml
- SUBSTRING_INDEX(str,d_str,count)的用法?
- 在霍格沃茨找零钱(20)
- 使用 jquery.easing.js 增强动画过渡效果
- iOS三个ImageView实现无限图片轮播效果
- 保证分布式系统数据一致性的6种方案
- Java命令学习系列(三)——Jmap
- ireport 子报表 返回参数
- 广义表及其实现
- AFNetWorking 判断当前版本是否是最新版本
- 腾讯暑期实习生面试题
- snapshot standby database
- (NDK基础一)JNI中C调用Java方法
- Linux中Memcached的安装和配置方法
- css常用的中文字体
- JAVA笔试面试题系列之----①多线程
- 浏览器判断是否安装了ios/android客户端程序
- Java命令学习系列(一)——Jps