2010-03-16 69 views
0

我有一些问题显示链接栏。Flex - 链接栏数据提供者的问题

我需要显示的数据是在一个XML文件中。 但是,我无法让链接栏显示xmllist(我确实已经读过,您不能将xmlllist设置为链接栏数据提供者...)。所以,我正在转换一个对象数组中的xmllist。

这是一些代码。

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> 

AS码,其将所述的XMLList在对象的数组:

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(); 
} 

Linkbar代码:

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

隔板不显示,并标签也没有。 但数组已填充(我测试了它)。

感谢您的帮助,您可以提供=)

问候, BS_C3


@Decado

下面是我用LinkBar中的代码:

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

以下是labelfunction的功能:

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

希望这会有所帮助。 Regards

回答

0

我找到了解决我的问题的方法。 我在链接栏中使用了一个labelfunction(而不是标签属性)。使用标签功能取得了诀窍。

但我还是不太明白标签属性为什么不起作用...

+0

你可以发布这样的示例代码吗? – Decado 2010-06-12 13:26:51

+0

我已编辑我的帖子。告诉你是否需要更多细节。 此致敬礼。 – 2010-06-13 21:33:00

0

这就是你要找的。看看你是否可以适应它。

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

嗨! 感谢您的回答。 我做了你的建议,但它仍然无法工作> _ < – 2010-03-17 10:20:15