Bonjour,
J'ai un souci avec mon code que je vais m'empresser de vous montrer
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public function refreshBuddyList():void
{
var dp:ArrayCollection = cList.list_buddies.dataProvider as ArrayCollection
for (var i:int = 0; i < dp.length; i++)
{
var b:Object = dp.getItemAt(i).data
// Replace item
dp.setItemAt({label:b.name, nb:tabNbMessageRecu[b.name+monPseudo], data:b , st:b.id, bb:tabStatutBuddyBloque[b.name+monPseudo], se:tabStatutBuddySelectionne[b.name+monPseudo]}, i)
}
// Update list
dp.refresh()
cList.list_buddies.invalidateList()
} |
le but de ce code est de rafraichir la liste avec les nouvelles valeurs des tableaux pour ensuite être affichées dans le composant cList
A l'exécution je me suis apercu que cela ne fonctionnait pas très bien j'ai donc essayé de le débugguer.
J'ai vérifié d'abord la taille de la collection, cela est correcte.
Ensuite j'ai modifié le code pour vérifier si j'obtenais bien la propriété "name" de l'objet "b" dans ma boucle en faisant ce ci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public function refreshBuddyList():void
{
var dp:ArrayCollection = cList.list_buddies.dataProvider as ArrayCollection
var taille:int = dp.length
var a:Alert = Alert.show("refreshBuddyList"+taille, '');
for (var i:int = 0; i < dp.length; i++)
{
var b:Object = dp.getItemAt(i).data
// Replace item
//dp.setItemAt({label:b.name, nb:tabNbMessageRecu[b.name+monPseudo], data:b , st:b.id, bb:tabStatutBuddyBloque[b.name+monPseudo], se:tabStatutBuddySelectionne[b.name+monPseudo]}, i)
Alert.show("refreshBuddyList", b.name);
}
// Update list
dp.refresh()
cList.list_buddies.invalidateList()
} |
Tout fonctionne parfaitement, le problème arrive avec cette ligne de code :
dp.setItemAt({label:b.name, nb:tabNbMessageRecu[b.name+monPseudo], data:b , st:b.id, bb:tabStatutBuddyBloque[b.name+monPseudo], se:tabStatutBuddySelectionne[b.name+monPseudo]}, i)
Là j'ai des problèmes dans ma boucle : quand je fais :
Alert.show("refreshBuddyList", b.name);
Je vois que j'ai des doublons voire triple et des objets manquants... la taille de ma collection est de 19 et je ne boucle pas 19 fois mais 10 ou 8 ou autre Je me rends compte que cette instruction pose problème, je la supprime et hop la boucle fonctionne parfaitement.
j'avoue être un peu dépassé par le problème.
merci de votre aide
Partager