Intereting Posts
Что такое типализм в Котлине и как он используется в этой реализации? Создание публичного экземпляра частного внутреннего класса в Котлине Можно ли добавить «статическую» функцию расширения для Java-класса? Создание классов Kotlin в Android Studio с использованием действий Я сейчас разрабатываю приложение для Android с Kotlin, но произошла ошибка: CompilationException: не удалось встроить метод в 'readText' Обозначение переменной Not Kotlin Аннотирование генерируемой нулевой высоты источника (для Kotlin) Использование ресурса в kotlin func – не работает с жирным банком (одна банка) Коллекции Kotlin бросают ClassNotFoundException на Android Эффективный способ добавления строк, разделенных запятой Есть ли какая-либо функция репликации в Котлине? Как создать заставку в tornadofx UNINITIALIZED_VARIABLE Переменная _longPressed должна быть инициализирована Как я могу подавить непроверенные предупреждения о броске? Стили вложенного объекта Realm

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

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