Bonjour,
Alors là, il y a un truc que je ne pige pas. Pouvez vous m'expliquer ? Est-ce un bug ?
Je déclare une ListView et j'active la sélection multiple. Avec cela, un petit bouton qui permet de supprimer les lignes sélectionnées.
1 2 3 4 5 6 7 8 9 10
| ArrayList<String> lstItems = new ArrayList<>();
for (int i = 0; i < 20; i++)
{
lstItems.add("Test " + (i + 1));
}
ObservableList<String> content = FXCollections.observableArrayList(lstItems);
final ListView<String> myList = new ListView<>();
Button btnRemove = new Button("Remove");
myList.setItems(content);
myList.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); |
Bon, j'écoute les actions sur le bouton, quand on clique dessus, ça doit supprimer la sélection de la liste, un truc tout bête:
1 2 3 4 5 6 7
| btnRemove.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0)
{
myList.getItems().removeAll(myList.getSelectionModel().getSelectedItems());
}
}); |
Pourquoi, lorsque je fais une sélection, par exemple "Test 5", ça me supprime TOUT de "Test 20" à "Test 5" ? Et cela peut importe la sélection, ça me supprimera tout de la fin de la liste au premier élément de la sélection (celui le plus haut dans la liste). Donc globalement, lorsque je veux supprimer uniquement le premier item, ça me supprime toute la liste.
Un sysout sur myList.getSelectionModel().getSelectedItems() montre bien la sélection courante.
Ce que je trouve plus étrange, c'est que ce code là par contre fonctionne ! :
myList.getItems().removeAll(Arrays.asList(myList.getSelectionModel().getSelectedItems().toArray()));
Quelqu'un aurait une explication ?
Merci d'avance.
Partager