坤坤

http://www.cnblogs.com/dubaokun/category/523967.html


http://yunzhongxia.iteye.com/


flex的数据类型

1flex的基本数据类型

 

类型名

类型描述

Boolean

只有两个值:true false

Int

整数类型,取值范围:-2147483648~2147483647

Null

只有一个值null,代表空值

Number

整数类型和浮点类型,使用64位双精度

String

字符串类型,以Unicode编码格式存放

Uint

正整数类型,取值范围:0-4294967295

Void

值为undefined,只可用作函数的返回类型。

 

Boolean 数据类型

Boolean 数据类型包含两个值:truefalse。默认值是false

int 数据类型

int 数据类型在内部存储为 32 位整数,它包含一组介于 -2,147,483,648 (-231) 和 2,147,483,647 (231 - 1) 之间的整数(包括 -2,147,483,648 和2,147,483,647)。早期的 ActionScript 版本仅提供 Number数据类型,该数据类型既可用于整数又可用于浮点数。在 ActionScript 3.0 中,现在可以访问 32位带符号整数和无符号整数的低位机器类型。如果您的变量将不会使用浮点数,那么,使用 int 数据类型来代替 Number数据类型应会更快更高效。

对于小于 int 的最小值或大于 int 的最大值的整数值,应使用 Number 数据类型。Number 数据类型可以处理-9,007,199,254,740,992 和 9,007,199,254,740,992(53 位整数值)之间的值。int数据类型的变量的默认值是 0。

Number 数据类型

在 ActionScript 3.0 中,Number 数据类型可以表示整数、无符号整数和浮点数。但是,为了尽可能提高性能,应将Number 数据类型仅用于浮点数,或者用于intuint类型可以存储的、大于 32 位的整数值。要存储浮点数,数字中应包括一个小数点。如果您省略了小数点,数字将存储为整数。

Number 数据类型使用由 IEEE 二进制浮点算术标准 (IEEE-754) 指定的 64 位双精度格式。此标准规定如何使用64 个可用位来存储浮点数。其中的 1 位用来指定数字是正数还是负数。11 位用于指数,它以二进制的形式存储。其余的 52位用于存储"有效位数"(又称为"尾数"),有效位数是 2 的 N 次幂,N 即前面所提到的指数。

可以将 Number 数据类型的所有位都用于有效位数,也可以将 Number数据类型的某些位用于存储指数,后者可存储的浮点数比前者大得多。例如,如果 Number 数据类型使用全部 64位来存储有效位数,则它可以存储的最大数字为 265 -1。如果使用其中的 11 位来存储指数,则 Number 数据类型可以存储的最大有效数字为 21023

Number 类型可以表示的最小值和最大值存储在 Number 类的名为Number.MAX_VALUENumber.MIN_VALUE的静态属性中。

Number.MAX_VALUE == 1.79769313486231e+308 Number.MIN_VALUE == 4.940656458412467e-324

尽管这个数字范围很大,但代价是此范围的精度有所降低。Number 数据类型使用 52 位来存储有效位数,因此,那些要求用 52位以上的位数才能精确表示的数字(如分数1/3)将只是近似值。如果应用程序要求小数达到绝对精度,则需要使用实现小数浮点算术(而非二进制浮点算术)的软件。

如果用 Number 数据类型来存储整数值,则仅使用 52 位有效位数。Number 数据类型使用 52位和一个特殊的隐藏位来表示介于 -9,007,199,254,740,992 (-253) 和 9,007,199,254,740,992 (253) 之间的整数。

Flash Player 不但将 NaN 值用作 Number类型的变量的默认值,而且还将其用作应返回数字、却没有返回数字的任何运算的结果。例如,如果您尝试计算负数的平方根,结果将是NaN。其它特殊的 Number 值包括"正无穷大"和"负无穷大"

uint 数据类型

uint 数据类型在内部存储为 32 位无符号整数,它包含一组介于 0 和 4,294,967,295(232- 1) 之间的整数(包括 0 和4,294,967,295)。uint 数据类型可用于要求非负整数的特殊情形。例如,必须使用 uint 数据类型来表示像素颜色值,因为int 数据类型有一个内部符号位,该符号位并不适合处理颜色值。对于大于 uint 的最大值的整数值,应使用 Number数据类型,该数据类型可以处理 53 位整数值。uint 数据类型的变量的默认值是 0。

Null 数据类型

Null 数据类型仅包含一个值:null。这是 String数据类型和用来定义复杂数据类型的所有类(包括 Object 类)的默认值。其它基元数据类型(如 Boolean、Number、int和 uint)均不包含null 值。如果您尝试向 Boolean、Number、int 或 uint类型的变量赋予null,则 Flash Player 会将null值转换为相应的默认值。不能将 Null 数据类型用作类型注释。

void 数据类型

void 数据类型仅包含一个值:undefined。在早期的 ActionScript版本中,undefined 是 Object 类实例的默认值。在 ActionScript 3.0中,Object 实例的默认值是null。如果您尝试将值undefined赋予 Object 类的实例,Flash Player 会将该值转换为null。您只能为无类型变量赋予undefined 这一值。无类型变量是指缺乏类型注释或者使用星号 (*)作为类型注释的变量。只能将void 用作返回类型注释。

String 数据类型

String 数据类型表示一个 16 位字符的序列。字符串在内部存储为 Unicode 字符,并使用 UTF-16格式。字符串是不可改变的值,就像在 Java 编程语言中一样。对字符串值执行运算会返回字符串的一个新实例。用 String数据类型声明的变量的默认值是null。虽然null 值与空字符串("") 均表示没有任何字符,但二者并不相同。

Object 数据类型

Object 数据类型是由 Object 类定义的。Object 类用作 ActionScript中的所有类定义的基类。ActionScript 3.0 中的 Object 数据类型与早期版本中的 Object数据类型存在以下三方面的区别:第一,Object 数据类型不再是指定给没有类型注释的变量的默认数据类型。第二,Object数据类型不再包括undefined 这一值,该值以前是 Object 实例的默认值。第三,在ActionScript 3.0 中,Object 类实例的默认值是null

2flex复杂的数据类型

flex复杂数据类型包括

Object 对象、 Array 数组、 Date 日期、Error 错误对象、Function 函数、 RegExp正则表达式、XML XML数据对象、XMLList。


String的属性:
使用转义符号“\” 来转义符号后面的字符:"string\"test" = string"test
length:用来获取字符串的长度
contact(...args):合并字符串,也可以使用+合并字符串
charAt(index):获取index位置的字符。
indexOf(val, starIndex):从starIndex 开始查找val在字符串中第一个出现的位置。找不到返回-1
split(delimiter, limit):返回以delimiter 分隔最大为limit的数组。
substr(startIndex, len):从startIndex位置开始截取长度为len的字符,如果startIndex为-1表示最后一个位置,当len大于最大长度时,自动返回最大长度值。

substring(startIndex, endIndex):截取从 startIndex 到endIndex位置的字符,两个参数都不能为负数,否则转为0,如果endIndex 省略,取默认值:字符的长度。

slice(startIndex, endIndex):同substring,并允许startIndex, endIndex为复数。

toUpperCase():转换为大写
toLowerCase():转换为小写

 

数组的使用
创建数组:
var arr:Array 

= new Array();//默认元素值为undefined
var arr:Array  = new Array(3);//创建一个包含3个元素的数组。
var arr:Array  = new Array("1", "2", "3");//直接给数组定义元素
var arr:Array  = [];
var arr:Array  = ["1", "2", "3"];
var arr:Array  =[3];  //并不是定义3个元素,而是将3作为数据放到数组中

获得数组元素:
arr[0]:第一个元素,如果下标超出范围,返回 undefined
arr.length:数字的长度

插入元素:

push():将数据添加到数组的尾部,push("flex")
unshift():将数据添加到数组队顶部,unshift("flex")
splice(startIndex, deleteCount,...values):把数据插入到数组的指定位置,startIndex:操作的下标,deleteCount:要删除的元素个数,...values:要添加的若干数据。

删除元素:

pop():删除数组的最后一个元素
shift():删除第一个元素
splice(startIndex, deleteCount,...values):删除任意位置的元素,从startIndex开始删除deleteCount个元素,并添加元素values。

排序:

sort:主要对简单数据结构的数组进行排序
sortOn:对复杂数据结构的数组排序
reverse:将现有顺序逆向
排序规则:排序规则可同时使用如:sort(Array.CASEINSENSITIVE |Array.DESCENDING)
Array.CASEINSENSITIVE:不区分大小写
Array.DESCENDING:降序排序
Array.UNIQUESORT:如果元素都是唯一,不存在重复就进行排序,否则不排序
Array.RETURNINDEXEDARRAY:将排序后的元素的新顺序返回,但不修改原来的数组
Array.NUMERIC:按照数字大小排序
复杂排序:
arr.sortOn("age", Array.NUMERIC); //"age"为元素的属性,将使用age来排序

多维数组:
var arr:Array  = new Array();
arr:push(["1","2"]);
访问:arr[0][0] 



Flex中对ArrayCollection进行排序

<?xml version="1.0" encoding="utf-8"?>  
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">  
     <mx:Script>  
         <![CDATA[  
            import mx.collections.SortField;  
            import mx.collections.Sort;  
            import mx.collections.ArrayCollection;  
            private var acSort:ArrayCollection=  
            new ArrayCollection([{id:0,userName:"zhangSan",age:21},  
                                 {id:2,userName:"liSi",age:24},  
                                 {id:1,userName:"wangWu",age:31}]);  
              
              
            private function sortAc():ArrayCollection{  
                 var sort:Sort=new Sort();  
                //按照ID升序排序  
                 sort.fields=[new SortField("id")];  
                  
                //按照userName降序排序  
                 sort.fields=[new SortField("userName",true,true)];  
                  
                //先按ID升序,再按userName降序  
                 sort.fields[new SortField("id"),new SortField("userName",true,true)];  
                 acSort.sort=sort;  
                 acSort.refresh();//更新  
                return acSort;  
             }  
         ]]>  
     </mx:Script>  
</mx:Application>

转]Flex 的Array和ArrayCollection

1.array作为控件使用

FLEX3写法:

<mx:Array id="barname">
    <mx:String>Flash</mx:String>
    <mx:String>Director</mx:String>
    <mx:String>Dreamweaver</mx:String>
    <mx:String>ColdFusion</mx:String>
</mx:Array>

FLEX4写法:

<fx:Array id="barname"> 
    <fx:String>Flex</fx:String> 
    <fx:String>Flash</fx:String> 
    <fx:String>Dreamweaver</fx:String> 
</fx:Array> 

举例

<mx:LinkBar id="navigationBar" dataProvider="{barname}"/>

2.array在程序中使用

[Bindable]
public var barname:Array=["Flex", "Flash", "Dreamweaver"];

引用:

<mx:LinkBar id="navigationBar" dataProvider="{barname}"/>

或者

var barname:Array=new Array();
barname.push("Flex");
barname.push("Flash");
barname.push("Dreamweaver");
navigationBar.dataProvider=barname;

3.array的排序

var barname:Array=new Array(1, 4, 3, 45, 4, 6, 7, 77, 9);
barname=sortArray(barname);
navigationBar.dataProvider=barname;

function sortArray(numbers:Array):Array
{
    numbers.sort(Array.NUMERIC);
    return numbers;
}

4.ArrayCollection特点

ArrayCollection是flex中的数组集合类,它是很常用的,我们使用它时需要注意几个地方
(1)事件监听
ArrayCollection可以为它注册一个集合改变的监听事件(CollectionEvent.COLLECTION_CHANGE),就是一旦 ArrayCollection数组改变就会触发Event,不是所有情况的改变都会触发改变事件,如果集合当中的对象属性没有被绑定,那么你改变它的对象值也是不会触发事件的,在这种情况下你也许可能需要去将对象的属性进行绑定或者通过itemUpdated方法去管理对象值改变,除非集合的长度改变了,事件才会被触发
(2)对象删除
ArrayCollection的对象删除方法removeAll(),有这样一种情况,当你在过滤集合数据的时候,它并不会删除所有数据,而是删除全部过滤的数据,不符合过滤条件的数据就没被删除,依然还在source中
(3)过滤函数
ArrayCollection有个filterFunction过滤函数,就是可能集合中你只需要显示其中某几个对象,你将会需要根据对象条件筛选对象,那么你可能会用过滤函数,过滤函数会将不符合条件的对象过滤出来,但是ArrayCollection有个source属性是不会变的,它是个数组,所有源数据全在里面,尽管你去过滤,所有对象都会一直存在其中
(4)排序
ArrayCollection还有一个sort属性是用来排序的,你可以为其指定排序字段

5.ArrayCollection在程序中使用

(1)插入或删除

import mx.collections.ArrayCollection;  
private var coll:ArrayCollection= new ArrayCollection(  
    [{name:"Martin Foo", age:25},  
        {name:"Joe Bar", age:15},  
        {name:"John Baz", age:23}]);  


要插入元素,可使用addItemAt和addItem: 
coll.addItemAt({name:"James Fez", age:40}, 0);
coll.addItem({name:"James Fez", age:40});
(2)搜索
Sort 对象提供findItem 方法用于搜索这个ArrayCollection 中的所有元素。
方法原型如下:
public function findItem(items:Array, values:Object, mode:String,
returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
Value 参数可以是包含属性和所需值的任何对象。
Mode 字符串可以是Sort.ANY_INDEX_MODE,表示返回任何匹配项索引,Sort.FIRST_INDEX_MODE 表示返回第一个匹配项索引,Sort.LAST_INDEX_MODE 表示返回最后一个匹配项索引。
returnInsertionIndex 参数表示如果该方法找不到由values 参数标识的项目,并且此参数为
true,则findItem() 方法将返回这些值的插入点,也就是排序顺序中应插入此项目的。
compareFunction 设置用于查找该项目的比较运算符函数.
举例
private function checkExistence():int {
var sort:Sort = new Sort(); 
return sort.findItem(coll.source,{name:nameTI.text, age:Number(ageTI.text)}, Sort.ANY_INDEX_MODE);
}
(3)过滤
filterFunction 属性是由ListCollectionView 类定义,它是ArrayCollection 的父类。
当过滤器函数被传递给继承自ListCollectionView 的任何子类后,这里为ArrayCollection 对象,应用过滤器后必须调用refresh 方法
将原型为function(item:Object):Boolean 的函数传递给ArrayCollection 的filter 属性。如果返回true 表示值继续留在ArrayCollection,返回false 表示其值被移除。
举例:
private function init():void { 
coll = new ArrayCollection([{name:"Martin Foo", age:25},{name:"Joe Bar", age:15},name:"John Baz", age:23},{name:"Matt Baz", age:21}]); 
coll.filterFunction = filterFunc; 
coll.refresh(); 
for(var i:int = 0; i<coll.length; i++) { 
trace(coll.getItemAt(i).name); 


private function filterFunc(value:Object):Object { 
if(Number(value.age) > 21) { 
return true; 

return false; 
}
(4)排序
首先要创建一个Sort,传递一个SortField 对象数组给fields 属性。这些SortField 对象包含的字符串正是每个ArrayCollection 元素将要用来排序的属性。如要对每个对象的age 属性进行排序,创建Sort 对象,传递SortField。
设置排序字段为age:
private function getOldest():void { 
var sort:Sort = new Sort(); 
sort.fields = [new SortField("age")]; 
coll.sort = sort; 
coll.refresh(); 
trace(coll.getItemAt(0).age+" "+coll.getItemAt(0).name); 

先按name升序排序,再按age降序排序
sort.fields = [new SortField("age"),new SortField("age",true,true)]; 
API说明:
public function SortField(
name:String = null, 
caseInsensitive:Boolean = false, 
descending:Boolean = false, 
numeric:Object = null)
参数  
name:String (default = null) — 此字段用来进行比较的属性的名称。如果该对象为简单类型,则传递 null。 
caseInsensitive:Boolean (default = false) — 在对字符串进行排序时,指示比较运算符是否忽略值的大小写。
descending:Boolean (default = false) — 指示比较运算符是否按降序排列项目。  
numeric:Object (default = null) — 指示比较运算符是否按编号而不按字母顺序比较排序项目。 

6.Array和ArrayCollection的比较


Array的优点:
1)Array的性能优于ArrayCollection,从测试结果平均看来,ArrayCollection的效率是随着object的数目呈线性下降的,而Array则是体现了优异的效率,在object增加的情况下,基本上没有太大的变化。所以如果在你需要遍历所有元素的情况下(比如说物理引擎,3D引擎等),Array是不错的选择
程序见附件1.
2)后台JavaBean也用的是数组[]
3)for循环数组似乎比for each ArrayConllection看起来更“傻瓜化”
4)给Array数组扩展长度,也可以变通实现,而且代价并不大
ArrayCollection的优点:
1)ArrayCollection 实现接口 违规广告ectionView,在 Flex 的类定义内属于[数据集],他提供更强大的检索、过滤、排序、分类、更新监控等功能。类似的类还有 XMLListCollection
2)用 array 在作为 dataProvider 绑定于 control 之上,就无法获得控件的更新(实际上效果是可以得到更新的),除非控件被重新绘制或者 data provider 被重新指定,而 Collection 则是将 array 的副本存储于 Collection 类的某个对象之中,其特点是 Collection 类本身就具备了确保数据同步的方法,例子如下(取自 adobe 内部工程师 training 示例,稍有改变)
3)对ArrayCollection中的对象进行增加删除更新操作时ArrayCollection会产生事件,可以通过collectionchange事件监听,所以在图表开发中都用ArrayCollection做数据源,一旦有更新,就会反映在图标上
附件1:

  
  
[折叠代码]
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx=" http://www.adobe.com/2006/mxml" frameRate=" 100" layout=" vertical" horizontalAlign=" center" > <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; [ Bindable] private var ds:ArrayCollection; private var array:Array; private var ac:ArrayCollection; public function loop(loopCount:uint):Object { array= null; ac= null; var begin:uint; var end:uint; var interval1:Number=0; var interval2:Number=0; var interval3:Number=0; var interval4:Number=0; var i:uint; // for array, insert to array i=0; array= new Array(); begin=getTimer(); for (i; i < loopCount; i++) { array.push({test: "helllo"}); } end=getTimer(); interval1=end - begin; t1.text=interval1.toString() + " ms"; //loop the array i=0; begin=getTimer(); for (i; i < array.length; i++) { array[i]; } end=getTimer(); interval3=end - begin; t3.text=interval3.toString() + " ms"; /// for ac, insert to array collection i=0; ac= new ArrayCollection(); begin=getTimer(); for (i; i < loopCount; i++) { ac.addItem({test: "helllo"}); } end=getTimer(); interval2=end - begin; t2.text=interval2.toString() + " ms"; //loop the array collection i=0; begin=getTimer(); for (i; i < ac.length; i++) { ac.getItemAt(i); } end=getTimer(); interval4=end - begin; t4.text=interval4.toString() + " ms"; return {ct: loopCount, array_insert: interval1, ac_insert: interval2, array_loop: interval3, ac_loop: interval4}; } private function autoLoop(): void { ds= null; ds= new ArrayCollection(); var i:uint=0; for (i; i < parseInt(count.text); i+=parseInt(count.text) > 100 ? parseInt(count.text) / 10 : 1) { ds.addItem(loop(i)); } } public function reset(): void { t1.text= "0"; t2.text= "0"; t3.text= "0"; t4.text= "0"; count.text= "1000"; ds= null; ds= new ArrayCollection(); } ]]> </mx:Script> <mx:ApplicationControlBar width=" 503" > <mx:Label text=" 插入条数:" fontSize=" 12" color=" #0B333C" fontWeight=" bold" /> <mx:TextInput width=" 98" text=" 1000" id=" count" /> <mx:Button id=" startBtn0" label=" Test" click="autoLoop()" /> <mx:VRule height=" 15" /> <mx:Button label=" reset" click="reset()" /> </mx:ApplicationControlBar> <mx:Panel width=" 500" height=" 480" layout=" horizontal" id=" testBed" title=" Array 与Array Collection的性能比较" fontSize=" 11" fontWeight=" normal" > <mx:Canvas width=" 100%" height=" 100%" id=" main" borderStyle=" none" autoLayout=" false" horizontalScrollPolicy=" off" fontSize=" 12" > <mx: LineChart id=" lc " x=" 8.5 " y=" 133 " width=" 463 " height=" 306 " showDataTips=" true " dataProvider=" { ds } " fontSize=" 12 " > <mx:horizontalAxis> <mx:CategoryAxis dataProvider=" { ds } " categoryField=" ct " title=" 插入Object数目 " /> </mx:horizontalAxis> <mx:verticalAxis> <mx:LinearAxis id=" la " minimum=" -1 " title=" 响应时间(毫秒) " /> </mx:verticalAxis> <mx:series> <mx:LineSeries displayName=" array 插入耗时 " yField=" array_insert " /> <mx:LineSeries displayName=" arraycollection 插入耗时 " yField=" ac_insert " /> <mx:LineSeries displayName=" array 遍历耗时 " yField=" array_loop " /> <mx:LineSeries displayName=" arraycollection 遍历耗时 " yField=" ac_loop " /> </mx:series> </mx:LineChart> <mx:HBox x=" 10 " y=" 0 " width=" 460 " height=" 134 " horizontalAlign=" left " verticalAlign=" middle " > <mx:Grid horizontalGap=" 1 " borderColor=" #C6C6C6 " borderStyle=" solid " > <mx:GridRow width=" 100% " height=" 100% " > <mx:GridItem width=" 86 " height=" 100% " > <mx:Label text=" 毫秒(ms) " fontSize=" 12 " /> </mx:GridItem> <mx:GridItem width=" 100% " height=" 100% " fontSize=" 12 " > <mx:Label text=" Array " /> </mx:GridItem> <mx:GridItem width=" 100% " height=" 100% " fontSize=" 12 " > <mx:Label text=" ArrayCollection " /> </mx:GridItem> </mx:GridRow> <mx:GridRow width=" 100% " height=" 100% " > <mx:GridItem width=" 66 " height=" 100% " > <mx:Label text=" 插入耗时 " fontSize=" 12 " /> </mx:GridItem> <mx:GridItem width=" 100% " height=" 100% " > <mx:Text text=" 0 " width=" 80 " id=" t1 " fontSize=" 12 " /> </mx:GridItem> <mx:GridItem width=" 100% " height=" 100% " > <mx:Text text=" 0 " id=" t2 " width=" 80 " fontSize=" 12 " /> </mx:GridItem> </mx:GridRow> <mx:GridRow width=" 100% " height=" 100% " > <mx:GridItem width=" 100% " height=" 100% " > <mx:Label text=" 遍历耗时 " fontSize=" 12 " /> </mx:GridItem> <mx:GridItem width=" 100% " height=" 100% " fontSize=" 12 " > <mx:Text text=" 0 " width=" 80 " id=" t3 " /> </mx:GridItem> <mx:GridItem width=" 100% " height=" 100% " > <mx:Text text=" 0 " id=" t4 " width=" 80 " fontSize=" 12 " /> </mx:GridItem> </mx:GridRow> </mx:Grid> <mx:VRule height=" 73 " width=" 3 " /> <mx:Legend dataProvider=" { lc } " width=" 100% " direction=" vertical " fontSize=" 12 " verticalGap=" 2 " fontWeight=" normal " fontStyle=" normal " fontFamily=" Verdana " /> </mx:HBox> </mx:Canvas> </mx:Panel> <mx:LinkButton label=" beherca " click="navigateToURL( new URLRequest( 'http://blog.beherca.com' ), '_blank' )" /> </mx:Application>
[折叠代码]

 

image

 

Flex 4中的新数据类型:ArrayList

不知大家注意到没有,在Flex 4中的引入了一种新数据类型:ArrayList。它实现了IList接口,底层以Array作为数据源。本质上它是一种轻量级的ArrayCollection,可以作为数据源绑定到控件上。但与ArrayCollection不同的是,它不能筛选和过滤数据。

看下面实例:

  
  
[折叠代码]
<?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"> <fx:Declarations> <s:ArrayList id="al"> <fx:Object type="Line" class="LineSeries"/> <fx:Object type="Mountain" class="AreaSeries"/> <fx:Object type="Candlestick" class="CandlestickSeries"/> <fx:Object type="HLOC" class="HLOCSeries"/> </s:ArrayList> </fx:Declarations> <s:DropDownList dataProvider="{al}" labelField="type" selectedIndex="0"/> </s:Application>
[折叠代码]

注意,基于list的Spark控件是不能直接以Array作为数据提供者的,一定要实现IList接口。这也应该是引入ArrayList数据类型的原因之一。

http://www.cnblogs.com/springsnow/archive/2010/05/29/1746803.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值