新下载了Flash Builder 4来学习flex。按照网上的一个例子写,但出现上面的错误。
代码如下:
- JScript code
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" backgroundColor="#AC8A8A"> <s:layout> <s:BasicLayout/> </s:layout> <fx:Script> <![CDATA[ //初始化 internal function InitList():void{ var srcArr:Array=new Array(); srcArr.push("China Soft"); srcArr.unshift("BBBB"); srcArr.unshift("CCCC"); list1.dataProvider=srcArr; } //循环初始化 internal function ForInitList():void{ var cycleArr:Array=new Array(); for(var i:Number=0;i<3;i++){ cycleArr.push("TestLs"+i); } list2.dataProvider=cycleArr; } ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <s:List x="114" y="87" id="list1" width="139" height="246"></s:List> <s:List x="441" y="87" width="135" height="246" id="list2"></s:List> <s:Button x="300" y="130" label="初始化" click="InitList"/> <s:Button x="300" y="186" label="循环初始化" click="ForInitList"/> </s:Application>
出错的部分是:
list1.dataProvider=srcArr;
list2.dataProvider=cycleArr;
搞不懂怎么回事,请大家看看。
------解决方案--------------------
呵呵。看来我也要学习Flex4了。我Out了。不过我看了下文档。
发现List的提供者必须实现IList接口。
此 DataGroup 的数据提供程序。它必须为 IList。
在 Flex 框架中包含多个 IList 实现,包括 ArrayCollection、ArrayList 和 XMLListCollection。
所以,list1.dataProvider=srcArr;
改成list1.dataProvider=new ArrayCollection(srcArr);或者
list1.dataProvider=new ArrayList (srcArr);
应该就可以了
------解决方案--------------------
写上面例子的人不太负责,有错误的。我给你用两种方式都写了个例子,你看看:
- XML code
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" backgroundColor="#AC8A8A"> <s:layout> <s:BasicLayout/> </s:layout> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; [Bindable] private var listAry1:ArrayCollection = new ArrayCollection(); //初始化 internal function InitList():void{ listAry1.addItem("China Soft"); listAry1.addItem("BBBB"); listAry1.addItem("CCCC"); } //循环初始化 internal function ForInitList():void{ var cycleArr:Array=new Array(); for(var i:Number=0;i<3;i++){ cycleArr.push("TestLs"+i); } list2.dataProvider=new ArrayCollection(cycleArr); } ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <s:List x="114" y="87" id="list1" width="139" height="246" dataProvider="{listAry1}"></s:List> <s:List x="441" y="87" width="135" height="246" id="list2"></s:List> <s:Button x="300" y="130" label="初始化" click="InitList()"/> <s:Button x="300" y="186" label="循环初始化" click="ForInitList()"/> </s:Application>