2010-03-16 10 views
0

Je rencontre des problèmes lors de l'affichage d'une barre de liens.Flex - Problèmes avec le fournisseur de données de la barre de liens

Les données que j'ai besoin d'afficher sont dans un fichier XML. Cependant, je ne pouvais pas obtenir la barre de liens pour afficher un xmllist (j'ai effectivement lu que vous ne pouvez pas définir une xmlllist comme fournisseur de données de barre de liens ...). Donc, je transforme le xmllist en un tableau d'objets.

Voici du code.

fichier XML:

<data> 
<languages> 
    <language id="en"> 
    <label>ENGLISH</label> 
    <source></source> 
    </language> 
    <language id="fr"> 
    <label>FRANCAIS</label> 
    <source></source> 
    </language> 
    <language id="es"> 
    <label>ESPAÑOL</label> 
    <source></source> 
    </language> 
    <language id="jp"> 
    <label>JAPANESE</label> 
    <source></source> 
    </language> 
</languages> 
</data> 

code qui transforme la XMLList en un tableau d'objets:

private function init():void 
{ 
var list:XMLList = generalData.languages.language; 
var arr:ArrayCollection = new ArrayCollection; 
var obj:Object; 
for(var i:int = 0; i<list.length(); i++) 
{ 
    obj = new Object; 
    obj.id = list[i][email protected]; 
    obj.label = list[i].label; 
    obj.source = list[i].source; 
    arr.addItemAt(obj, arr.length); 
}  
GlobalData.instance.languages = arr.toArray(); 
} 

Code LinkBar:

<mx:HBox horizontalAlign="right" width="100%"> 
<mx:LinkBar id="language" dataProvider="{GlobalData.instance.languages}" separatorWidth="3" labelField="{label}"/> 
</mx:HBox> 

Le séparateur n'affiche pas, et ni l'étiquette. Mais le tableau est rempli (je l'ai testé).

Merci pour toute aide que vous pouvez fournir =)

Cordialement, BS_C3


@Decado

Voici le code pour LinkBar je:

<mx:LinkBar id="language" 
    dataProvider="{GlobalData.instance.languages}" 
    labelFunction="language_labelFunction" 
    itemClick="language_itemClick(event)" 
    styleName="GLBLinkBTN" 
    separatorColor="#FFFFFF" 
    separatorWidth="1" 
    linkButtonStyleName="HPLanguages" 
    /> 

Et voici la fonction pour la labelfunction:

private function language_labelFunction(item:Object):String 
{ 
    return item.label; 
} 

Espérons que cela aide. Cordialement

Répondre

0

J'ai trouvé une solution à mon problème. J'ai utilisé une labelfunction dans la barre de liens (au lieu de la propriété label). L'utilisation d'une fonction d'étiquette a fait l'affaire. Mais je ne comprends toujours pas pourquoi la propriété label ne fonctionnait pas ...

+0

Pourriez-vous poster un exemple de code s'il vous plaît? – Decado

+0

J'ai modifié mon message. Dites si vous avez besoin de plus de détails à ce sujet. Cordialement. –

0

Cela fait ce que vous cherchez. Voyez si vous pouvez l'adapter.

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
    <mx:Array id="dataProvider"> 
     <mx:Object id="en" label="English" /> 
     <mx:Object id="fr" label="French" /> 
     <mx:Object id="es" label="Espanol" /> 
     <mx:Object id="jp" label="Japanese" /> 
    </mx:Array> 

    <mx:LinkBar 
     horizontalCenter="0" 
     verticalCenter="0" 
     dataProvider="{dataProvider}" 
     labelField="label" /> 
</mx:Application> 
+0

Hi! Merci pour votre réponse. J'ai fait ce que vous avez proposé mais cela ne fonctionne toujours pas. _ < –