bonjour le forum,

J'ai un soucis concernant une horizontallist qui est "bindé" sur un arrayCollection. Le soucis c'est quand je supprime dans l'ARrayCollection ma Liste n'affiche plus rien.. J'ai vérifié la logique et mon arrayCollection lui contient les bonnes valeurs..


Composant MXML HorizontalList :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<mx:HorizontalList
                                color="#006699"
                                id="hListPanier"
                                columnWidth="180"
                                  dataProvider="{collectionPanier}"
                                  selectionDisabledColor="#FFFFFF"
                                 backgroundColor="#FFFFFF"
                                 labelFunction="displayItemPanier"
                                 labelField="libelle"
                                 iconField="iconeIssu"
                                 itemRenderer="view.CustomItemRendererPanier"
                                 width="100%"
                                 height="100" />

déclaration du ArrayCollection :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
                                //panier de sélection
                                [Bindable]
                                private var collectionPanier : ArrayCollection;

cette fonction supprime les items cochés dans le panier :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[Bindable]
private function supprimeDuPanier():void {
            //supprime les espaces (trim)
            var r:RegExp = /^\s*(.*?)\s*$/g
 
            var tableauReference:ArrayCollection = null;
            tableauReference = new ArrayCollection; //nouveau tableau qui va contenir les éléments  subsistants dans le panier
 
            for (var i:uint = 0 ; i < collectionPanier.length ; i++){
                        var c1:String = String(collectionPanier.getItemAt(i).conceptIssu[0]);
                        var c2:String = c1.replace(r, "$1");
                        var testB:Boolean = false;
 
                        for (var a:uint = 0 ; a < __model.tabObjEnSuppresionPanier.length ; a++) {
                                        var conceptAs:String = __model.tabObjEnSuppresionPanier.getItemAt(a).concept;
                                        var c0:String = conceptAs.replace(r, "$1");
                                        if (c0 == c2){
                                                testB=true; // si l'élément est trouvé pour suppression
                                                break;
                                        }
                        }
 
        if (!testB) {
                    tableauReference.addItem(collectionPanier.getItemAt(i));  // on ajout dans le tableau temporaire que les élements qui ne sont pas à supprimer
        }
 
    }
    tableauReference.refresh();
    collectionPanier = tableauReference; // on recopie le panier "nettoyé" dans l'arraycollection bindé
 
    hListPanier.invalidateDisplayList();
    hListPanier.invalidateList();
 
 
    //TEST POUR CONSTATER QUE L'ARRAY COLLECTION CONTIENT LES BONNES VALEURS
    var message:String="Etat du nouveau panier : \n";
 
    for (var x:uint = 0; x < collectionPanier.length; x++) {
                message = message + "   -> " + collectionPanier.getItemAt(x).conceptIssu[0] + " \n";   
    }
 
    Alert.show(message);
    //FIN DE TEST
 
 
 
}
Je constate que le composant HorizontalList n'est pas mis à jour alors que l'ArrayCollection contient bien les bonnes valeurs..

Merci d'avance pour vos suggestions..

--