创建动态列表的动态列表的最佳实践?

Best practise for creating a dynamic list of dynamic lists?

我想在运行时用任意数量的元素填充一个列表(RecycleView 或类似的)。

示例:

//Data Models
Animal(spices: String, breed: Breed)  
Breed(name: String, color: String)  

列表应该类似于:

Cats
-----------
Ragdoll
White

Bengal
Beige/Black

Dogs
-----------
Golden Retriever
Beige

German Shepard
Brown

St. Bernard
White/Brown

列表可以无限长,每个动物可以有无限数量的品种。
我一直在使用嵌套回收器,但恐怕这会导致性能不佳。

填充这种列表的"correct"方法是什么?

您需要一个具有多种视图类型的 RecyclerView 适配器。看看this codelab,应该对你有帮助。

编辑:在适配器中托管所有这些数据的最简单方法是将其展平。有点像:

val data = mutableListOf<Object>()
animals.forEach { animal ->
    data.add(animal)
    animal.breeds.forEach { -> breed
        data.add(breed)
    }
}

// ... use the data as a source for your adapter

项目视图类型

override fun getItemViewType(position: Int) =
    when (getItem(position)) {
        is Animal -> ITEM_VIEW_TYPE_HEADER
        is Breed -> ITEM_VIEW_TYPE_ITEM
    }

等等等等