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

Как я должен действовать, когда хочу генерировать таблицу из списка списков, который содержит только строки (например, данные 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 из java Плавная прокрутка в JavaFX TableView Скопируйте неизменяемую карту на Mutable Map в Котлин Напишите исходный HTML-код внутри kotlinx.html DSL Как загрузить веб-сайт в приложении без загрузки его веб-сайта в Chrome или его приложении? в котлин Могу ли я обновить глубоко вложенный неизменный объект, не сообщая ему о его контексте? Использование отражения для передачи и изменения примитива без использования массива Разбор объекта json с динамическим полем в Котлине Комната не может выбрать конструктор, поскольку подходящие ошибки являются множественными конструкторами Android Parcelable в Котлине Постоянная поддержка на android oreo Уведомление о запросе в Realm не срабатывает с использованием Kotlin Как изменить свойства тестовых объектов в KotlinTest через interceptTestCase Объявления классов в Котлине Привязка данных Android к Kotlin, BaseObservable и пользовательский делегат