有两个列表视图,我可以将项目拖动到另一个项目中,但拖动的项目不会从源列表中删除。
我知道代码不是处理数据的正确方法,但我认为它应该可行,但事实并非如此。
...
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)
}
}
感谢。
答案 0 :(得分:1)
你在这方面过度思考并为自己引入一些陷阱:)
您创建modelItems
列表作为可观察列表,由ListView的selectedItems属性支持。因此,ListView中所选项目的更改将反映在您的modelItems
属性中。
当您致电selectionModel.clearSelection()
时,您的modelItems
列表也是空的,因此您正在拨打removeAll(anEmptyList)
。
做listview.items.removeAll(listview.selectionModel.selectedItems)
。当从备用列表中删除项目时,ListView将更新所选项目列表。