Suppression d'un objet dans une ArrayList mal gérée?
Bonjour,
J'ai un tableau (webuijsf table) qui est bindé avec une liste d'objet "Book" (ArrayList).
J'ai une fonction qui me permet d'ajouter des objets dans cette liste ce qui met à jour mon tableau. Jusque là tout est normal.
Cependant, lorsque je veux réaliser l'opération inverse, (list.remove au lieu de list.add) mon tableau de se met pas à jour comme si rien ne s'était supprimé de ma liste. Par contre, lorsque je vide complètement mas liste ça fonctionne...
Fonction d'ajout (qui fonctionne) :
Code:
1 2 3 4 5 6 7 8
|
protected void AjoutPanier(Integer id) {
Book currentBook = findBookById(id);
panier.add(currentBook);
} |
Fonction de suppression qui môôôrche pas :
Code:
1 2 3 4 5 6 7 8 9
|
protected void DelPanier(Integer id) {
Book currentBook = findBookById(id);
panier.remove(currentBook);
} |
Du coup, j'ai réussi à contourner un peu près la chose en itérant sur ma liste pour en créer une nouvelle que j'affecte finalement à l'autre (assez tordu j'avoue) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
// Méthode tordue...
List<Book> tmpBookList = new ArrayList<Book>();
Iterator<Book> it = panier.iterator();
while(it.hasNext()) {
Book bkk = it.next();
if (!bkk.getIdBook().equals(id)) {
tmpBookList.add(it.next());
}
}
panier.clear();
panier = new ArrayList<Book>(tmpBookList); |
Alors si quelqu'un peut m'expliquer pourquoi ça ne fonctionne pas, je suis vraiment preneur parce que là je ne vois vraiment pas ce que je fais de mal...