Remove objet dans un TableView
Bonjour,
J'ai un problème avec la gestion d'une liste observable utilisée dans un TableView.
Voici un bout de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
private ObservableList<WrapperRoom> DB = FXCollections.observableArrayList();
//Charge la liste DB à partir de requête SQL...
DB = loadDB();
public void addTeam(Team t){
WrapperRoom wr;
for(Room r:t.getRooms()){
wr = new WrapperRoom();
wr.setDate(LocalDate.now());
wr.setNameTeam(t.getNameTeam());
wr.setChipNbr(t.getId());
wr.setGameTime(LocalTime.parse("00:00"));
wr.setRoom(new Room(r.getNameRoom()));
DB.add(wr);
}
}
public void deleteTeam(Team t){
t.getRooms().forEach((Room r) -> {
Predicate<WrapperRoom> wrPredicate = wr -> (wr.getDate().compareTo(LocalDate.now())==0)&&(wr.getNameTeam().equals(t.getNameTeam()))&&(wr.getRoom().getNameRoom().equals(r.getNameRoom()))&&(wr.getGameTime().equals(r.getGameTime()))&&(wr.getChipNbr().equals(t.getId()));
System.out.println("DB size : "+DB.size());
DB.removeIf(wrPredicate);
System.out.println("DB size : "+DB.size());
});
} |
Donc, j'ai une liste observable DB. Quand j'ajoute un objet 'WrapperRoom' (-> addTeam) dans ma liste, mon TableView est bien mit à jour directement. Mais dès que je veux enlever un objet à l'aide de la méthode 'removeIf' (-> deleteTeam), mon (mes) objet n'est pas retiré. C'est bien les objets qui ne sont pas retirés de ma liste car j'ai testé avec un DB.size() avant et après l'appel à 'removeIf' et ma liste a tjrs le même nombre d'objets !
Si je ferme/réouvre mon application et que je veux retirer un objet, ça fonctionne.
Quelqu'un à une idée ?
Merci d'avance.