Android开发经验谈Android开发Android开发

优雅地刷新RecyclerView

2018-09-28  本文已影响151人  Android高级架构探索

前言

还是那句话,RecyclerView的viewType增多,逻辑变复杂,几个月后,你确定还能理清思路吗?假设我们服务端是多个接口返回数据,你确定能正确刷新相应type吗?想一个RecyclerView高效快捷管理整个界面吗?你还在使用notifyDataSetChanged无脑刷新吗?你想单个viewType在loadingView,dataView,errorView自如切换吗?如果你迟疑了,那你不妨试试本库。

特点

效果

线性排布

image

方格排布

image

关键字高亮

image

刷新错误页面

image

高频率刷新

image

更新内容

支持刷新type错误页面(可自定义)

image.png

一行代码搞定,前者提供实体类是考虑有些用户需要根据实体数据属性去更新,因此错误页面的layoutId是用户提供的。

支持同时刷新多个type(异步,高频率)

image.png

这里采用的是队列的形式管理刷新,提供清空队列的Api。

链式注册资源

image.png

由于参数越来越多,这里采用了较为流行的链式注册,内部通过ResourcesManager管理所有资源。

注:原来的注册方式已设置为过时,请及时更新,不出2个版本将移除。

支持刷新单个数据

image.png

可能某个type只有一个实体数据管理着整个type


image.png

可传T的子类集合

提供helper的清除单个type,清除整个界面api

image.png

提供getHeaderId的默认实现抽象类

假设你不实现粘性头而强制要写getHeaderId确实挺讨厌的,由于现在android还不是很好地兼容java8,因此暂时提供DefaultMultiHeaderEntity。

使用注意点

type 取值范围

常量差值

image.png

结束

库多多少少也更新几个版本了,你的意见,你的建议,你的star,你的分享,一直是我前进的动力。还有一点要说的就是现在关于LayoutManager,RecyclerView,Adapter的流派很多,我们更关注于数据的优雅刷新。

gradle依赖

image.png
上一篇下一篇

猜你喜欢

热点阅读