Я прошел через ваш суть, и мне показалось, что проблема заключалась в связывании выбора, верно? Я немного покопался и обнаружил, что связывание наблюдаемых списков нелегко. Я не думаю, что я даже видел решение, которое бы не просто добавляло слушателей для насмешки связывания. Однако завершение этого списка в SimpleListProperty
, похоже, помогло. Вот демо:
class TestView : View() {
// This mocks your target list in the ViewModel
val targetList = SimpleListProperty(listOf<String>().asObservable())
override val root = vbox(10) {
// Both table views and tree views use an Observable Selection list
listview(listOf("asefas", "asefasef", "asefasefasefase").asObservable()) {
// Wrap in SimpleListProperty, then bind
targetList.bind(SimpleListProperty(selectionModel.selectedItems))
selectionModel.selectionMode = SelectionMode.MULTIPLE
}
setPrefSize(300.0, 300.0)
}
init {
// Target list now reflects changes made to selection model
targetList.addListener { _, _, change ->
println("Selections changed to: $change")
}
}
}