RecyclerView
来源:互联网 发布:python和c 的区别 编辑:程序博客网 时间:2024/06/14 18:06
RecyclerView最大的优势就是灵活,RecyclerView只需改变一行代码就可以变化多种不同的布局显示排版,这一点对于开发者是非常方便的!
RecyclerView.Adapter,比BaseAdapter做了更好的封装,把BaseAdapter的getView方法拆分成onCreateViewHolder方法和onBindViewHolder方法,强制需要创建ViewHolder,这样的好处就是避免了初学者写性能不佳的代码
添加分割线
//通过以下方法添加分割线
mRecyclerView.addItemDecoration(newDividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST));
DividerItemDecoration需要继承RecyclerView.ItemDecoration这个抽象类实现一些方法 。但是我感觉过于麻烦,所以我想到的是:
直接在item_view里面底部自己添加一根线布局,这样就无需重写了,并且这样还有个好处就是,如果细心的同学会发现,添加分割线,最后一个item下面不会有分割线,显然当数据量不足一个屏幕的时候显得很突兀,但是在item_view下面添加一个线的布局则不会出现这种情况
添加点按效果
RecyclerView直接在item_view里面配置即可selector即可。
动画
一个好的用户体验就是要有操作动画的过渡,而不是生硬的刷新列表。
推荐一个RecyclerView的动画库(recyclerview-animators)
(由于 GIF 动图超过微信大小,请大家脑补一下。或点击「阅读原文」,在网页版中查看。 )
RecyclerView自带添加、删除动画,而ListView则需添加额外的代码才能实现。
删除调用RecyclerView的adapter的notifyItemRemoved
添加调用RecyclerView的adapter的notifyItemInserted
说到adapter我们就来说说RecyclerView.Adapter和BaseAdapter相比,额外提供了一下这些方法:
// 数据发生了改变,那调用这个方法,传入改变对象的位置。
publicfinalvoidnotifyItemChanged(intposition);
// 可以刷新从positionStart开始itemCount数量的item了
publicfinalvoidnotifyItemRangeChanged(intpositionStart,intitemCount);
// 添加,传入对象的位置。
publicfinalvoidnotifyItemInserted(intposition);
// 删除,传入对象的位置。
publicfinalvoidnotifyItemRemoved(intposition);
// 对象从fromPosition移动到toPosition
publicfinalvoidnotifyItemMoved(intfromPosition,inttoPosition);
//批量添加
publicfinalvoidnotifyItemRangeInserted(intpositionStart,intitemCount);
//批量删除
publicfinalvoidnotifyItemRangeRemoved(intpositionStart,intitemCount);
改变列表某个布局状态且保持当前位置
这种需求是普遍存在的,就是改变列表某一个item数据,然后刷新列表,如果是ListView刷新后则会回到最顶部,而RecyclerView同样的操作但是原来滑动的位置不变。
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- 堆排序
- webView自适应屏幕大小
- 6.7JAVA面向对象
- JavaScript验证正则表达式
- MVC HttpWebRequest XML 请求
- RecyclerView
- weblogic中文解决方案
- 层层剖析-activity启动模式以及生命周期
- 设计模式之禅
- 课程设计(数据库)
- 字符集,字符编码和数据结构
- ActiveMQ 即时通讯服务 浅析
- Java初学者都必须理解的六大问题
- BroadcastReceiver中的设计模式