Bonjour,

J'ai un problème avec la gestion d'une liste observable utilisée dans un TableView.

Voici un bout de code :
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());
        });
}
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.