无法删除 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 将更新所选项目列表。