1.定义商品数据类,包含名称和价格2个字段:
代码语言:javascript
复制data class Goods(var name: String, var price: Double = 0.0)
2.构建商品数据map,key为商品分类"水果"、"蔬菜"、"肉类",value为具体的商品列表:
代码语言:javascript
复制val tableData = mapOf(
"水果" to arrayOf("苹果", "梨", "香蕉").map { Goods(it, (1..10).random() * 1.0) },
"蔬菜" to arrayOf("大豆", "花菜", "土豆").map { Goods(it, (1..10).random() * 1.0) },
"肉类" to arrayOf("牛肉", "猪肉", "羊肉").map { Goods(it, (1..10).random() * 1.0) }
)
3.用treetableview构建UI,每个treeitem包括名称和价格两列:
代码语言:javascript
复制treetableview<Goods> {
column("商品名称", Goods::name){
minWidth=200.0
}
column("价格", Goods::price){
minWidth=200.0
}
root = TreeItem(Goods("商品"))
populate { parent ->
parent.isExpanded=true
if (parent == root) tableData.keys.map {
Goods(it).apply {
// 将每个商品分类下的具体商品价格进行求和
this.price = tableData[this.name]?.sumByDouble { it.price } ?: 0.0
}
}
else tableData[parent.value.name]
}
resizeColumnsToFitContent()
minWidth=500.0
}
4.完整代码: