XAdapter Node数据操作(Android RecyclerView)

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

XAdapter 目录


    /**
     * 更新数据
     */
    fun <L : Collection<D>> refresh(list: L)


    /**
     * 按当前 [source] 重新扁平化并写入 Adapter 数据列表,随后 [notifyDataSetChanged]。
     * 若已先调用 [refresh](带集合参数)更新 [source],可单独调用本方法触发表格刷新。
     */
     fun refresh() 

    /**
     * 在根节点中添加一个节点
     * @param node
     * @param index 指定位置(相对数据源),null 在末尾添加
     */
    fun addNode(node: D, index: Int? = null) 

    /**
     * 在根节点中添加多个节点
     * @param nodes
     * @param index 指定添加位置,不传则在末尾添加
     */
    fun <L : Collection<D>> addNode(nodes: L, index: Int? = null) 


    /**
     * 在parent节点中添加一个子节点node
     * @param parent
     * @param node
     * @param index node在parent中的位置
     *
     */
    fun addChildNode(parent: D, node: D, index: Int? = null) 

    /**
     * 在parent节点中添加多个子节点
     * @param parent
     * @param nodes
     * @param index nodes在parent中的位置
     */
    fun <L : Collection<D>> addChildNode(parent: D, nodes: L, index: Int? = null)

    /**
     * 根节点中删除一个节点
     * @param node 被删除的节点
     */
    fun removeNode(node: D) 

    /**
     * 根节点中删除指定位置的节点
     * @param index 被删除的节点
     */
    fun removeNodeAt(index: Int)

    /**
     * 从start位置开始,删除count个节点
     * @param start 开始位置
     * @param count 删除数量
     */
    fun removeNode(start: Int, count: Int) 

    /**
     * 删除多个节点
     * @param nodes 被删除的节点
     */
    fun removeNodeList(nodes: List<D>)

    /**
     * 删除子节点
     */
    fun removeChildNode(parent: D, node: D)

    /**
     * 删除子节点
     */
    fun removeChildNodeAt(parent: D, index: Int) 

    /**
     * 删除子节点
     */
    fun removeChildNode(parent: D, start: Int, count: Int)

    /**
     * 删除子节点
     */
    fun removeChildNodeList(parent: D, nodes: List<D>)

    /**
     * 删除指定位置的节点,该位置是对应adapter中的位置,一般用于删除当前item
     * @param adapterPosition 该节点在adapter中的位置
     */
    fun removeNodePosition(adapterPosition: Int)

    /**
     * 更新数据
     * 如果只是node属性变更,可以调用该方法同步刷新UI
     */
    fun updateNode(node: D, payload: Any? = null) 

    /**
     * 更新数据
     * 可以是任意节点数据
     * 该方法只更新当前数据,不会同步刷新子节点数据,如果需要更新子节点列表,请使用replaceNode()方法。
     * @param oldNode 旧数据
     * @param newNode 新数据
     */
    fun updateNode(oldNode: D, newNode: D, payload: Any? = null)

    /**
     * 更新子节点数据
     *
     * 该方法只更新当前数据,不会同步刷新子节点数据,如果需要更新子节点列表,请使用replaceNode()方法。
     * @param oldNode 旧数据
     * @param newNode 新数据
     */
    fun updateChildNode(parent: D, oldNode: D, newNode: D, payload: Any? = null) 

    /**
     * 交换数据
     * 该方法会对所有子节点更新
     *
     */
    fun replaceNode(oldNode: D, newNode: D) 

    /**
     * 查找当前元素在Adapter数据集合中理论上所在的位置。
     * 此方法是通过对源数据扁平化计算得出来的,即使未添加到adapter.datas中也能计算;但该方法对性能有一定损耗。
     * 如果确定该node已经存在adapter中,可以使用getData().indexOf()方法获取所在位置。
     * @param node 需要查找的元素
     * @return 在Adapter中对应的position,-1表示不在列表中
     */
    fun findAdapterPosition(node: D): Int 

XAdapter 目录

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

友情链接更多精彩内容