有两个列表视图,我可以将一个项目拖到另一个项目中,但拖动的项目不会从源列表中删除。
我知道代码不是处理数据的正确方法,但我认为它应该有效,但它就是不工作。
...
setOnDragDone {event ->
removeSelected(event.gestureSource)
}
...
fun removeSelected(gestureTarget: Any?) {
var listview = gestureTarget as ListView<String>
val modelItems = FXCollections.observableList(listview.selectionModel.selectedItems)
if (modelItems != null) {
listview.selectionModel.clearSelection()
listview.items.removeAll(modelItems)
}
}
谢谢。
你想太多了,一路上给自己引入了一些陷阱:)
将modelItems
列表创建为可观察列表,由 ListView 的 selectedItems 属性提供支持。因此,对 ListView 中所选项的更改将反映在modelItems
属性中。
当您呼叫selectionModel.clearSelection()
时,您的modelItems
列表也是空的,因此您正在呼叫removeAll(anEmptyList)
。
只是做listview.items.removeAll(listview.selectionModel.selectedItems)
.从支持列表中删除项目时,ListView 将更新所选项目列表。