Flex - Проблемы с поставщиком панелей ссылок - PullRequest
0 голосов
/ 16 марта 2010

У меня проблемы с отображением панели ссылок.

Данные, которые мне нужно отобразить, находятся в файле 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].@id;
  obj.label = list[i].label;
  obj.source = list[i].source;
  arr.addItemAt(obj, arr.length);
 }    
 GlobalData.instance.languages = arr.toArray();
}

Код ссылки:

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

Разделитель не отображается, как и метка. Но массив заполнен (я проверял это).

Спасибо за любую помощь, которую вы можете оказать =)

С уважением, BS_C3


@ Decado

Вот код для панели ссылок, которую я использовал:

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

А вот функция для функции label:

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

Надеюсь, это поможет. Привет

Ответы [ 2 ]

0 голосов
/ 25 марта 2010

Я нашел решение своей проблемы. Я использовал функцию метки в панели ссылок (вместо свойства метки). Использование функции метки сделало свое дело.

Но я все еще не совсем понимаю, почему свойство label не работает ...

0 голосов
/ 17 марта 2010

Это делает то, что вы ищете. Посмотри, сможешь ли ты это адаптировать.

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