Bonjour,
J'ai un problème avec la gestion d'une liste observable utilisée dans un TableView.
Voici un bout de code :
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 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()); }); }
Si je ferme/réouvre mon application et que je veux retirer un objet, ça fonctionne.
Quelqu'un à une idée ?
Merci d'avance.
Partager