XAdapter 快速创建NodeAdapter(Android RecyclerView)

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

XAdapter 目录

单布局Node创建

  • 数据类必须实现NodeEntity接口,并重写getChildNodeEntityList()方法
data class NodeInfo(val name: String, val child: MutableList<NodeInfo>? = null) : NodeEntity<NodeInfo?, NodeInfo>{
    override var xParentNodeEntity: NodeInfo? = null
    override var xNodeGrade: Int? = null

    override fun getChildNodeEntityList(): MutableList<NodeInfo>? {
        return child
    }
}
  • 调用nodeAdapter方法创建Adapter
val adapter = nodeAdapter<ItemNodeBinding, NodeInfo> { 
    
    }

多布局Node创建

  • 数据类必须实现NodeEntity接口,并重写getChildNodeEntityList()方法
data class AreaNode(val name: String) : NodeEntity<CityNode, Unit> {
    override var xParentNodeEntity: CityNode? = null
    override var xNodeGrade: Int? = null
    override fun getChildNodeEntityList(): MutableList<Unit>? {
        return null
    }
}

data class ProvinceNode(val name: String, val city: MutableList<CityNode>) : NodeEntity<Unit, CityNode> {
    override var xParentNodeEntity: Unit? = null
    override var xNodeGrade: Int? = null

    override fun getChildNodeEntityList(): MutableList<CityNode> {
        return city
    }
}

data class CityNode(val name: String, val area: ArrayList<AreaNode>) : NodeEntity<ProvinceNode, AreaNode> {
    override var xParentNodeEntity: ProvinceNode? = null
    override var xNodeGrade: Int? = null

    override fun getChildNodeEntityList(): MutableList<AreaNode> {
        return area
    }
}
  • 调用nodeAdapter和withType方法创建Adapter
val adapter = nodeAdapter()
    .withType<ItemNodeBinding, ProvinceNode> {
        
    }.withType<ItemNodeBinding, CityNode> { 
        
    }.withType<ItemNodeBinding, AreaNode> {
        
    }.toAdapter()

XAdapter 目录

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

友情链接更多精彩内容