У меня есть ListView
с элементами и разработана функция удаления, которая удаляет элемент. Проблема Im сталкивается, когда я удаляю элемент, элемент ниже также удаляется.Удаление выбранного элемента в ListView в javafx
Чтобы лучше понять ситуацию. ex:
Если у меня есть 5 элементов в списке, и я выбираю и удаляю «элемент 2», тогда элемент 2 & 3 удаляется. И пункты 1, 4 & 5 остается в списке. Если удалить последний элемент в списке, то элемент будет удален, и я получаю java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
Вот мой код:
public void handleDeleteButton() {
btnDelete.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
final int selectedIdx = playerList.getSelectionModel().getSelectedIndex();
if (selectedIdx != -1) {
String itemToRemove = playerList.getSelectionModel().getSelectedItem();
final int newSelectedIdx =
(selectedIdx == playerList.getItems().size() - 1)
? selectedIdx - 1
: selectedIdx;
playerList.getItems().remove(selectedIdx);
playerList.getSelectionModel().select(newSelectedIdx);
//removes the player for the array
System.out.println("selectIdx: " + selectedIdx);
System.out.println("item: " + itemToRemove);
players.remove(selectedIdx);
}
}
});
}
Я хочу только выбранный элемент будет удален. Как мне это сделать? И как вы можете выбрать таблицу?
players
Список игроков, используемых в ListView
.
Что такое 'игроки'? – fabian
newSelectedIdx присваивается выбранным идентификатором, если выбраноIdx не является последним индексом. Итак, в этом случае вы удалите этот элемент, а затем выберите его, вы получите indexOutofBoundsException, так как не останется ни одного элемента. –
@fabian players is observableList подключился к списку –