Tornadofx – управление объектом таблицы tableview во время сборки

Мое требование похоже на то, что Angular предоставляет HTML-страницы.
В основном при создании таблицы вы перебираете список записей, чтобы получить запись, а затем мы можем удалить строку на основе условия if. Что-то вроде этого:

ng-repeat = "record in records" ng-if = "record.Id != 0" 

Точно так же в Tornadofx, если я хочу создать табличное представление, я делаю это:

 tableview<Record>(recordList) { //I want to remove row with the 0th recordId column("Id", Record::Id) column("First Name", Record::firstNameProperty) column("Last Name", Record::lastNameProperty) } 

Увидев учебники, я пробовал следующее, но не повезло:

 val removeZeroId = booleanBinding(idProp, idProp) { id != "0" } visibleWhen { //compilation Record::removeZeroId } 

Было бы легко, если бы я мог иметь объект строки в представлении таблицы и выполнять операции над ним.

Честно говоря, я не ясно понял привязки торнадофокса, так что я мог бы пропустить что-то основное.

Вы должны использовать SortedFilteredList чтобы отфильтровать элементы, которые вы не хотите. Это делает логику пользовательского интерфейса чистой, поскольку вы работаете только с представлением в своей базовой структуре данных. Это очень не похоже на Angular, где вам нужно решить эти вещи, когда вы рисуете строки таблицы для каждой записи, которую хотите отобразить.

SortedFilteredList может быть сконфигурирован с помощью функции predicate , которая передает запись и ожидает, что значение Boolean будет определять, должна ли текущая запись быть видимой в списке.

 class MyView : View() { val recordList = getYourListOfRecordsFromSomewhere() val data = SortedFilteredList(recordList) override val root = tableview(data) { column("Id", Record::idProperty) column("First Name", Record::firstNameProperty) column("Last Name", Record::lastNameProperty) } init { // Configure the filter predicate for the SortedFilteredList data.predicate = { it.id != 1 } } } 

Также обратите внимание, что вы можете обновить предикат фильтра в любое время. Изменения в предикате будут немедленно отображаться в отображаемых строках.

Intereting Posts
Котлин говорит, что мой тип возврата ошибочен Firebase-Firestore не загружает 2 документа одновременно Как использовать Anko DSL внутри фрагмента? Сложить список для сопряжения с назначением деструктуризации в котлин Почему в заявлении на печать Kotlin не требуется уточнение сферы применения? Цепочка опций вместо if / else Как включить обработчик, обработанный обработчиком аннотации, для проверки класса пути в Java / Kotlin «Ошибка неоднозначности разрешения перегрузки» разрешена с другой перегрузкой Создайте экземпляр абстрактного класса в Котлине Реализация Java-аннотации в Котлине Как я могу сказать Kotlin, что массив или коллекция не могут содержать нули? ListView.CHOICE_MODE_SINGLE неразрешенная ссылка Обработчик аннотации Kotlin-Kapt не работает с maven Должны ли свойства класса в Котлине быть частными и как обращаться к ним? Преобразование кода создателя Java Parcel в Kotlin