文章目录
效果图
一. 使用的第三方依赖及知识点
1. recyclerView适配器BaseRecyclerViewAdapterHelper
https://github.com/CymChad/BaseRecyclerViewAdapterHelper/releases
使用
- (1) 继承
BaseMultiItemQuickAdapter
因为集合中有两个种集合对象, 而这两种集合对象都实现了MultiItemEntity
接口, 所以此处实体写为MultiItemEntity
- (2) 在构造方法中添加两种布局的
//TYPE_HEADER和TYPE_DATA为定义的两个常量 //实现MultiItemEntity接口的实体类需要实现getItemType()方法,返回值即为TYPE_HEADER或TYPE_DATA addItemType(TYPE_HEADER, R.layout.tab1_item_header) addItemType(TYPE_DATA, R.layout.tab1_item_photo)
- (3) 实体类实现
MultiItemEntity
接口,getItemType()
方法返回两种TYPE
2. 粘性头部 PinnedSectionItemDecoration
https://github.com/oubowu/PinnedSectionItemDecoration
使用
- (1) 在adapter中添加如下代码
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
super.onAttachedToRecyclerView(recyclerView)
FullSpanUtil.onAttachedToRecyclerView(recyclerView, this, TYPE_HEADER)
}
override fun onViewAttachedToWindow(holder: BaseViewHolder) {
super.onViewAttachedToWindow(holder)
FullSpanUtil.onViewAttachedToWindow(holder, this, TYPE_HEADER)
}
注: 此处提供一个通用的BaseHeaderAdapter
abstract class BaseHeaderAdapter<T : MultiItemEntity>(data: List<T>) :
BaseMultiItemQuickAdapter<T, BaseViewHolder>(data) {
init {
addItemTypes()
}
protected abstract fun addItemTypes()
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
super.onAttachedToRecyclerView(recyclerView)
FullSpanUtil