相册(1) ---- 获取所有照片并按照时间分组

本文介绍了如何使用BaseRecyclerViewAdapterHelper和PinnedSectionItemDecoration来管理手机相册,展示所有照片并按照时间进行分组。首先,通过BaseRecyclerViewAdapterHelper创建适配器,接着利用PinnedSectionItemDecoration实现粘性头部效果。核心逻辑包括获取手机照片,按时间戳排序,并将照片和时间分组,最后将数据注入适配器展示。
摘要由CSDN通过智能技术生成


效果图

效果图

一. 使用的第三方依赖及知识点

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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值