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

Как я должен действовать, когда хочу генерировать таблицу из списка списков, который содержит только строки (например, данные 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
Файл найден в IntelliJ, но не встроен в банку java.lang.NoClassDefFoundError: kotlin / jvm / internal / Intrinsics в libgdx Можно ли создать конструкторы расширений в Котлине? Почему котлин не разрешает ковариантную mutablemap быть делегатом? Android Kotlin создает реализацию класса Parcelable дает ошибку в «переопределении» метода writeToParcel kotlin получить представление из заголовка NavigationView Kotlin и @Transient Единичное тестирование Rxjava наблюдаемых, которые имеют задержку Показать фрагмент в виджетах android Повторная установка + повтор RxJava с другой ссылкой Котлин строит, вызывая JVM к ошибке сегментации Как я могу инициализировать переменную перед каждым тестом, используя kotlin-test framework Как получить данные Google Fit Step с сервера? Ошибка: ошибка преобразования байт-кода в dex: причина: метод по умолчанию или статический интерфейс, используемый без –min-sdk-version> = 24 Литералы класса Kotlin с пустой левой стороной еще не поддерживаются?