正文
本文就利用
ItemDecoration
打造 分组列表,并配有悬停头部功能。
亮点预览:
添加多个ItemDecoration、它们的执行顺序、ItemDecoration方法执行顺序、ItemDecoration和RecyclerView的绘制顺序
。
用法:为
RecyclerViewPool
添加 一个或多个
ItemDecoration
:
为
RecyclerView
添加
ItemDecoration
只要这么一句
addItemDecoratio
n()
。
它有两个同名重载方法:
-
addItemDecoration(ItemDecoration decor)
常用,(按照add顺序,依次渲染ItemDecoration)
-
addItemDecoration(ItemDecoration decor, int index)
add一个ItemDecoration,并为它指定顺序
上来就高能,别的讲解 RecyclerView 的文章一般都是对 ItemDecoration 一笔带过,用的Demo 一般也都是官方的 DividerItemDecoration类,更别提还添加多个 ItemDecoration了。其实我也是写Demo的时候才发现这个方法,点进去查看了一下源码:
老套路:我们最常用的单参数方法
内部调用了双参数方法,并把index 传入-1
。
我们 add 的 ItemDecoration 都存储在
RecyclerView
类的
mItemDecorations
变量里, 这个变量就是一个ArrayList,定义如下:
private final ArrayList mItemDecorations = new ArrayList();
常用(全部)方法,按照在 RecyclerView 中它们被调用的顺序排列:
这个三个方法也是继承一个
ItemDecoration
必须实现的三个方法。(其实 ItemDecoration 里除了@Deprecated 的方法 也就它们三了)