无法删除 tornadoFX 中的 ListView 项目
Can't remove ListView item in tornadoFX
有两个列表视图,我可以将一个项目拖到另一个项目中,但是拖拽的项目不会从源列表中删除。
我知道该代码不是处理数据的正确方法,但我认为它应该可以工作,但就是不行。
...
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 将更新所选项目列表。
有两个列表视图,我可以将一个项目拖到另一个项目中,但是拖拽的项目不会从源列表中删除。
我知道该代码不是处理数据的正确方法,但我认为它应该可以工作,但就是不行。
...
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 将更新所选项目列表。