Динамические столбцы таблицы

Как я должен действовать, когда хочу генерировать таблицу из списка списков, который содержит только строки (например, данные 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 🙂

Intereting Posts
Kotlin (Maven) – исполняемый JAR без исходных файлов Kotlin запускается в случае сбоя Android Studio «Не удалось синхронизировать Gradle: время ожидания подключения: подключитесь к журналу IDE для получения дополнительной информации (Help | Show Log)» разреженный список значений с использованием диапазонов Волейбольная библиотека. Где я ошибся с Ответчиком? Заполнение строки с помощью Firestore RecyclerView itemClickListener в Котлине KotlinJS нерешенный элемент reference.style Как изменить префикс последовательности Kotlin, но сохранить хвост? Есть ли способ развернуть серверное приложение бэкэнд (Kotlin) в Firebase? Как вводить представления фрагментов, используемых в PagerAdapter с кинжалом? Как обрабатывать дублированный класс перед компиляцией kotlin-android? Использование универсального типа интерфейса в методе делегировать вложенную закрытую закрытие соответствующего класса Конфигурация «compile» in устарела, но все конфигурации – это «реализация», Kotlin: Разница между объектом и сопутствующим объектом в классе