动态表格列

当我想从只包含字符串的列表(例如,来自csv的数据)列表中生成表时,我该如何继续。 列名不重要。 从提供的所有例子中,我只看到绑定表项到特定的模型(这不适合那里,因为我有未知的数量和名称的列)。

如果你已经知道列名和数据类型,我会建议硬编码。 如果您对格式一无所知,并且只想创建具有完全动态列的TableView,则可以使用csv数据中的索引作为提取器为您的数据创建StringProperty值:

 class MyView : View() { val data = FXCollections.observableArrayList<List<String>>() val csvController: CsvController by inject() init { runAsync { csvController.loadData() } ui { entries -> // Generate columns based on the first row entries.first().forEachIndexed { colIndex, name -> root.column(name, String::class) { value { row -> SimpleStringProperty(row.value[colIndex]) } } } // Assign the extracted entries to our list, skip first row data.setAll(entries.drop(1)) } } override val root = tableview(data) } class CsvController : Controller() { // Load data from CSV file here, we'll use som static data // where the first row is the headers fun loadData() = listOf( listOf("Name", "Age"), listOf("John", "42"), listOf("Jane", "24") ) } 

导致应用程序

这种方法只能用于可视化CSV文件中的数据。 如果您需要编辑或操作数据,预先了解数据类型将产生一个不太脆弱的应用IMO 🙂