博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
还在用ListView?
阅读量:7026 次
发布时间:2019-06-28

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

还在用Lisview?RecyclerView都已经出来一年多了!

想必大家多或多或少的接触过或者了解过RecyclerView,为什么没有用起来,原因大概如下?

  • ListView我用的挺好的,为什么要换RecyclerView?
  • ListView稳定,熟悉,还知道很多开源库,特别的好用!
  • RecyclerView不能添加头部,ListView能!

RecyclerView

在Andorid 5.0出来不久,我就已经写过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自带添加、删除动画,而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

效果展示

布局更灵活的RecyclerView

封装了RecyclerView常用方法,如click等等,以及支持了更多不同的布局,使得RecyclerView使用起来更简单!

这里写图片描述

造起来!小伙伴们!

文/陈宇明(简书作者)
原文链接:http://www.jianshu.com/p/a92955be0a3e
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
你可能感兴趣的文章
UNIX网络编程书中源代码测试环境搭建 (centos中取时间问题)
查看>>
C# 中的拓展方法,以StringBuilder加上IndexOf方法举例
查看>>
用半监督算法做文本分类
查看>>
看书不挑出版社的都是山炮——评60家国内出版社
查看>>
恢复Ext3下被删除的文件(转)
查看>>
感觉好累
查看>>
使用ant制作hadoop1.1.2的eclipse插件(转载)
查看>>
Css的transform和transition
查看>>
POJ1386Play on Words(欧拉回路)
查看>>
batch normalization在测试时的问题
查看>>
Python时间和日期
查看>>
uchome中模糊搜索的实现
查看>>
五子棋AI的思路
查看>>
AtomicInteger和count++的比较
查看>>
JS删除数组条目中重复的条目
查看>>
Servlet客户请求的处理:HTTP请求报头HttpServletRequest接口应用
查看>>
pat 1014 1017 排队类问题
查看>>
常见负载均衡的优点和缺点对比(Nginx、HAProxy、LVS)
查看>>
Mac电脑C语言开发的入门帖
查看>>
洛谷P4242 树上的毒瘤
查看>>