将外部的XML文件加载到 Flex DropDownList 件中使用
把XML类型 转换成让DropDownList 组件dataProvider 可以用的数据
dataProvider : IList
此 DataGroup 的数据提供程序。它必须为 IList。
在 Flex 框架中包含多个 IList 实现,包括 ArrayCollection、ArrayList 和 XMLListCollection。
此属性可用作数据绑定的源。修改此属性后,将调度 dataProviderChanged
事件。
解决方法如下:
//创建URLLoader对象
//URLLoader 对象会先从 URL 中下载所有数据,然后才将数据用于应用程序中的代码。它会发出有关下载进度的通知,通过 bytesLoaded
和 bytesTotal
属性以及已分派的事件,可以监视下载进度。
[Bindable]
private var arr:XMLListCollection = new XMLListCollection();
var urlLoader:URLLoader = new URLLoader();
//侦听Event.COMPLETE事件
urlLoader.addEventListener(Event.COMPLETE,complete);
//从外部加载数据
urlLoader.load(new URLRequest("assets/vocation.xml"));
//complete 处理事件的侦听器函数
private function complete(event:Event):void
{
//获得XML文件
var voc:XML = new XML(event.target.data);
//也可以用 voc.children() 方法
arr.source = voc.elements("items");
}
// new ArrayCollection(arr.toArray()); 可得到ArrayCollection对象,我们这里可以不用
protected function ddl_voc_changeHandler(event:IndexChangeEvent):void
{
content.text = ddl_voc.selectedItem.content;
}
/*Flex 应用程序*/
<s:DropDownList id="ddl_voc" x="20" y="128" labelField="vocation" dataProvider="{arr}" prompt="选择职业"
change="ddl_voc_changeHandler(event)"/>
<s:TextArea id="content" x="15" y="153" width="264" height="102" borderVisible="false" color="#054E30"/>
/*xml文件*/
<vocations>
<items>
<vocation>
战士
</vocation>
<content>
内容
</content>
<skill>
技能
</skill>
</items>
</vocations>
欢迎访问Java学习者论坛 http://www.javaxxz.com