无法删除tornadoFX中的ListView项

时间:2018-05-26 12:55:13

标签: 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)
        }
    }

感谢。

1 个答案:

答案 0 :(得分:1)

你在这方面过度思考并为自己引入一些陷阱:)

您创建modelItems列表作为可观察列表,由ListView的selectedItems属性支持。因此,ListView中所选项目的更改将反映在您的modelItems属性中。

当您致电selectionModel.clearSelection()时,您的modelItems列表也是空的,因此您正在拨打removeAll(anEmptyList)

listview.items.removeAll(listview.selectionModel.selectedItems)。当从备用列表中删除项目时,ListView将更新所选项目列表。