当我单击某个按钮时,我想从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);
您的代码似乎正在尝试清除选择,因为您正在尝试从
selectionModel
的selectedItems
列表中删除所有元素。问题在于,当您删除每个项目时,其余项目的索引会发生变化,因此最终您将删除错误的项目,并且可能最终以ArrayIndexOutOfBoundsException
结束(如果您最终获得的项目少于a的最大索引)选定的项目)。