XAdapter item增删改查(Android RecyclerView)

XAdapter 是一个对 Android RecyclerView Adapter 的轻量级封装库,基于kotlin特性,可以做到 \color{red}{一个方法实现一个功能}。

XAdapter 目录

1 常规模式

设置或刷新数据

adapter.setList(list)
adapter.refresh(list)

设置或刷新数据

adapter.setList(list)//设置数据,会替换原来的list对象
adapter.refresh(list)//保留原来的list对象,但是会重置列表元素

添加数据

adapter.add(list)//添加多条数据
adapter.add(item)//添加一条数据
adapter.add(index,list)//指定位置添加多条数据
adapter.add(index,item)//指定位置添加一条数据

删除数据

adapter.removeAt(index)//删除指定位置的数据
adapter.remove(start,count)//从start处开始,删除count条数据
adapter.remove(item)//删除指定数据
adapter.remove(list)//删除多条数据
adapter.remove()//删除所有数据

修改数据

adapter.updateAt(index,item)//将item替换原来index处的数据
adapter.updateAt(index)//修改index处数据内容
adapter.update(item)//修改item内容
adapter.update(list)//修改多条数据
adapter.swap(fromPosition,toPosition)//交换位置

获取列表数据

adapter.getDataList()

2 增量更新数据(Differ)

与ListAdapter用法相似。

  • 步骤一:初始化时设置数据匹配规则
adapter.setDiffer(itemCallback)
  • 步骤二:数据变更时提交数据
adapter.submitList(list)

3 方法定义

 /**
     * 设置数据
     * 会替换原来的数组对象
     * Differ模式下不可用
     */
    fun <L : MutableList<D>> setList(list: L)

    /**
     * 刷新数据
     * 会保留原数组对象
     * Differ模式下不可用
     */
    fun <L : Collection<D>> refresh(list: L)

    /**
     * 添加数据
     * Differ模式下不可用
     */
    fun <L : Collection<D>> add(list: L)

    /**
     * 添加数据
     * Differ模式下不可用
     */
    fun add(data: D)

    /**
     * 添加数据
     * Differ模式下不可用
     */
    fun add(index: Int, data: D)

    /**
     * 添加数据
     * Differ模式下不可用
     */
    fun <L : Collection<D>> add(index: Int, list: L)

    /**
     * 删除数据
     * Differ模式下不可用
     */
    fun removeAt(index: Int)

    /**
     * 删除数据
     * Differ模式下不可用
     */
    fun remove(start: Int, count: Int)

    /**
     * 删除数据
     * Differ模式下不可用
     */
    fun remove(data: D)

    /**
     * 删除数据
     * 改方法会刷新整个列表
     * Differ模式下不可用
     */
    fun <L : Collection<D>> remove(list: L)

    /**
     * 删除所有数据
     * Differ模式下不可用
     */
    fun remove()

    /**
     * 修改数据
     */
    fun updateAt(index: Int, data: D, payload: Any? = null)

    /**
     * 按索引修改数据
     */
    fun updateAt(index: Int, payload: Any? = null)

    /**
     * 修改数据
     */
    fun update(data: D, payload: Any? = null)

    /**
     * 修改数据
     */
    fun <L : Collection<D>> update(list: L, payload: Any? = null)

    /**
     * 交换数据
     * Differ模式下不可用
     */
    fun swap(fromPosition: Int, toPosition: Int)

    /**
     * 使用Differ算法迭代数据
     */
    fun setDiffer(
        diffCallback: DiffUtil.ItemCallback<D> = DefaultItemCallback(),
        listener: AsyncListDiffer.ListListener<D> = AsyncListDiffer.ListListener<D> { _, _ -> }
    ): Employer

    /**
     * 使用Differ算法迭代数据
     */
    fun setDiffer(
        config: AsyncDifferConfig<D>,
        listener: AsyncListDiffer.ListListener<D> = AsyncListDiffer.ListListener<D> { _, _ -> }
    ): Employer

    /**
     * 在Differ模式下更新数据
     */
    fun submitList(list: List<D>)

    /**
     * 在Differ模式下更新数据
     */
    fun submitList(list: List<D>, commitCallback: Runnable)

XAdapter 目录

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容