专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Flex

类型1067:Array 类型值的隐式强制指令的目标是非相关类型,该如何解决

发布时间:2011-06-27 20:47:23 文章来源:www.iduyao.cn 采编人员:星星草
类型1067:Array 类型值的隐式强制指令的目标是非相关类型
新下载了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>
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: