当我单击某个按钮时,我想从ListView中清除所有内容。我试图通过索引将其删除,但它给了我异常(exception)。我不太了解ListView的SelectionModel。这是我的尝试:

asiLogsListView.getSelectionModel().selectAll();
        ObservableList<Integer> indices = asiLogsListView.getSelectionModel().getSelectedIndices();
        for(int index : indices) {
            asiLogsListView.getSelectionModel().getSelectedItems().remove(index);
        }

或者
asiLogsListView.getSelectionModel().getSelectedItems().removeAll(indices);

最佳答案

要清除ListView中的所有项目,只需执行

asiLogsListView.getItems().clear();

如果要清除选择,请执行
asiLogsListView.getSelectionModel().clearSelection();

棘手的是从ListView中删除所有选定的项目:
List<Integer> selectedItemsCopy = new ArrayList<>(asiLogsListView.getSelectionModel().getSelectedItems());
asiLogsListView.getItems().removeAll(selectedItemsCopy);

您的代码似乎正在尝试清除选择,因为您正在尝试从selectionModelselectedItems列表中删除所有元素。问题在于,当您删除每个项目时,其余项目的索引会发生变化,因此最终您将删除错误的项目,并且可能最终以ArrayIndexOutOfBoundsException结束(如果您最终获得的项目少于a的最大索引)选定的项目)。

10-06 12:31