介绍
采用的基本原理就是Header和Footer作为RecyclerView的一个Item,只是显示的方式特别一点,ListView实际也是这么做的所以添加了Header之后,数据的位置会错乱。
由于使用不同的LayoutManager时显示效果也不一样, 所以针对不同的LayoutManager需要做不同的操作。
分析一下,LinearLayoutManager比较简单,只需要将Header和Footer作为一项就可以了,GridLayoutManager和StaggeredGridLayoutManager在这个基础上还需要将Header和Footer所在的Item充满他所在的这一行。
变量和方法
|
|
根据是否有Header和Footer获取数据Size
|
|
根据是否有Header和Footer获取Type
|
|
根据是否有Header和Footer创建Holder
|
|
LinearLayoutManager
- 由于LinearLayoutManager是连续排列的,所以只需要创建不同的holder就可以实现header+footer
GridLayoutManager
- 首先如何知道是否是GridLayoutManager,重写onAttachedToRecyclerView方法获取Manager,调用gridLayoutManager.setSpanSizeLookup()方法,设置他跨越的宽度。
|
|
StaggeredGridLayoutManager
- 主要使用StaggeredGridLayoutManager.LayoutParams的 layoutParams.setFullSpan(true);方法设置
|
|
QuickAdapter
- 最后贴一下整个QuickAdapter的源代码,涉及相关具体的类可以去这里查看
|
|