在使用BRVAH库基础上三步实现sticky header

sticky-layoutmanager

第一步:引入sticky-layoutmanager库

第二步:设置layoutManager

recyclerView.run {
            adapter = mAdapter
            layoutManager = StickyHeadersLinearLayoutManager<ContentAdapter>(requireContext())
        }

第三步:adapter 实现 StickyHeaders接口,isStickyHeader方法确定谁为header。

class ContentAdapter :BaseMultiItemQuickAdapter<XXXBean,BaseViewHolder>(),
    LoadMoreModule, StickyHeaders {
    init {
        addItemType(Header, R.layout.item_header)
        addItemType(Content, R.layout.item_content)
    }

    override fun getItemCount() = data.size
    override fun convert(holder: BaseViewHolder, item: XXXBean) {
        when (holder.itemViewType) {
            Header -> {
               ...
            }
            Content -> {
                ...
            }
        }
    }

    override fun isStickyHeader(position: Int): Boolean {
        return data[position].itemType == Header
    }
}

组装list

val groupBy = mutableListOf.groupBy { xxxBean: XXXBean ->
                    条件...
                }

groupBy.forEach { _, list ->
    val sticky= XXXBean(header)
    listData.add(sticky)
    listData.addAll(list)
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容