Bonjour,

J'ai un souci avec mon code que je vais m'empresser de vous montrer
:

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
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 :


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
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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