Flex4中ArrayCollection的遍历方法
我最近在学习Flex,但是没有系统的学习过,看过的书中也没有关于ArrayCollection更详细的介绍。我现在用Flex写了几个前台页面,通过它和后天的java代码实现通讯。 我从后台java处返回页面的是一个List<User>。 User是一个对象,User中有(id,name,age)等很多属性。我现在要在前台中得到这些属性,请问应该怎么做?
我的部分代码如下:
protected function resultHandler(event:ResultEvent):void{
event.result //我看了不少东西,通过这个就能得到后台传来的值。 但是怎么遍历event.result呢?
}
小弟真诚在这里求解,希望大神能帮帮。先谢谢了。
[解决办法]
Flex和后台有多种通讯的方式,不知你所用的是哪一种? RestfulService, AMF, Socket等。
最简单的是RestfulService,以你的例子来说,后台应该返回类似下面的一个XML:
<?xml version="1.0" encoding="utf-8"?>
<UserList>
<User>
<name>张三</name>
</User>
<User>
<name>李四</name>
</User>
</UserList>
然后Flex里面就用
var xml:XML = new XML(event.result);
var xmlList:XMLListCollection = new XMLListCollection(xml.UserList.User);
xmlList就可以作为DataSource遍历或展示UserList信息了。
[解决办法]
你如果要直接拿到domain对象的list,需要用RemoteObject通讯,后台要配BlazeDS或LCDS,网上很多教程,你可以自己下个看看,其它方式无法返回对象的,只能返回基本类型,例如XML,字符串等
[解决办法]
楼上非正解,不能直接转换成ArrayCollection
方法如下:
protected function resultHandler(event:ResultEvent):void{
var result:Array = event.result as Array;
var arr:ArrayCollection = new ArrayCollection ();
arr.souse = result;
for each (var user:Object in arr){
trace(user.id + " | " + user.name);
}
[解决办法]
for(var i:int=0;i<arr.length;i++){
var u:User = arr.getItemAt(i) as User;
}
flex3 这个可以。 试试吧。 我用flex3 的。 flex4 还没试过