还在用ListView?!OutMan!RecyclerView!
来源:互联网 发布:linux smartctl 安装 编辑:程序博客网 时间:2024/05/16 05:39
还在用Lisview?RecyclerView都已经出来一年多了!
想必大家多或多或少的接触过或者了解过RecyclerView,为什么没有用起来,原因大概如下?
- ListView我用的挺好的,为什么要换RecyclerView?
- ListView稳定,熟悉,还知道很多开源库,特别的好用!
- RecyclerView不能添加头部,ListView能!
RecyclerView
在Andorid 5.0出来不久,我就已经写过RecyclerView的简单介绍以及基本使用,不了解的可以看看ListView升级版RecyclerView,了解过的同学可以忽略,并往下看。
- RecyclerView最大的优势就是灵活,RecyclerView只需改变一行代码就可以变化多种不同的布局显示排版,这一点对于开发者是非常方便的!
- RecyclerView.Adapter,比BaseAdapter做了更好的封装,把BaseAdapter的getView方法拆分成onCreateViewHolder方法和onBindViewHolder方法,强制需要创建ViewHolder,这样的好处就是避免了初学者写性能不佳的代码
在实战中我们会遇到什么问题?
get到下面的技能就能够在使用RcyclerView的大路上畅通无阻了!
- 添加分割线
- 添加点按效果
- 列表动画
- 改变某个数据保持当前位置
- 添加头部尾部
- 列表分组
- 各种效果集成Demo
- 更灵活的RecyclerView
添加分割线
//通过以下方法添加分割线mRecyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST));
DividerItemDecoration需要继承RecyclerView.ItemDecoration这个抽象类实现一些方法 。但是我感觉过于麻烦,所以我想到的是:
直接在item_view里面底部自己添加一根线布局,这样就无需重写了,并且这样还有个好处就是,如果细心的同学会发现,添加分割线,最后一个item下面不会有分割线,显然当数据量不足一个屏幕的时候显得很突兀,但是在item_view下面添加一个线的布局则不会出现这种情况
添加点按效果
RecyclerView直接在item_view里面配置即可selector即可。
动画
一个好的用户体验就是要有操作动画的过渡,而不是生硬的刷新列表。
推荐一个RecyclerView的动画库(recyclerview-animators)
RecyclerView自带添加、删除动画,而ListView则需添加额外的代码才能实现。
删除调用RecyclerView的adapter的notifyItemRemoved
添加调用RecyclerView的adapter的notifyItemInserted
说到adapter我们就来说说RecyclerView.Adapter和BaseAdapter相比,额外提供了一下这些方法:
// 数据发生了改变,那调用这个方法,传入改变对象的位置。public final void notifyItemChanged(int position);// 可以刷新从positionStart开始itemCount数量的item了public final void notifyItemRangeChanged(int positionStart, int itemCount);// 添加,传入对象的位置。public final void notifyItemInserted(int position);// 删除,传入对象的位置。public final void notifyItemRemoved(int position);// 对象从fromPosition移动到toPosition public final void notifyItemMoved(int fromPosition, int toPosition); //批量添加 public final void notifyItemRangeInserted(int positionStart, int itemCount);//批量删除public final void notifyItemRangeRemoved(int positionStart, int itemCount);
改变列表某个布局状态且保持当前位置
这种需求是普遍存在的,就是改变列表某一个item数据,然后刷新列表,如果是ListView刷新后则会回到最顶部,而RecyclerView同样的操作但是原来滑动的位置不变。
各种解决方案的RecyclerView的Adapter
BaseRecyclerViewAdapterHelper
布局更灵活的RecyclerView
twoway-view 封装了RecyclerView常用方法,如click等等,以及支持了更多不同的布局,使得RecyclerView使用起来更简单!
原文链接:http://www.jianshu.com/p/a92955be0a3e
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
- 还在用ListView?!OutMan!RecyclerView!
- 还在用ListView?
- 还在用notifyDataSetChanged的或许已经out(ListView)
- 编写程序配置、设置界面,你还在用listview吗,还在使用自定义dialog吗?
- ListView+RecyclerView
- RecyclerView &ListView
- 解决 RecyclerView 在Android Studio已经导入情况下还无法实例引用问题
- 你还在用notifyDataSetChanged?
- 你还在用notifyDataSetChanged?
- 你还在用notifyDataSetChanged?
- 你还在用notifyDataSetChanged?
- 你还在用notifyDataSetChanged?
- ListView和RecyclerView比较
- 使用RecyclerView替代ListView
- RecyclerView之垂直ListView
- ListView & RecyclerView播放视频
- RecyclerView替代listview
- ListView RecyclerView使用EmptyView
- dpi对应图标分辨率
- odoo8 FormView的one2many中many记录删除权限精细控制
- 【POJ 1286】Necklace of Beads(Polya 定理)
- IOS FFMPEG的使用
- 序列模型-RNN
- 还在用ListView?!OutMan!RecyclerView!
- LeetCode 92. Reverse Linked List II(翻转链表)
- 扩展欧几里德求逆元,快速幂 hdoj 1211
- Objective-C ---代理和协议 (梳理整理)
- datetimepicker 插件用法及参数说明
- mongoVUE 连接MongoDB3.2.2不能正常显示collection的问题
- 机器学习笔记08:支持向量机(一)(SVM)
- [BZOJ1006][HNOI2008]神奇的国度(弦图最小染色)
- 342. Power of Four