mx和spark中dataProvider的差异

本文深入探讨了在Flex框架中,列表组件(如DataGridBase、List、TileBase)如何通过dataProvider属性绑定数据源,以及mx与spark组件在处理数据源时的差异。重点介绍了mx组件支持的多种数据类型,包括Array、ICollectionView、XMLListCollection、ArrayCollection等,并解释了spark组件对数据源类型的限制。文章还对比了ArrayList与ArrayCollection的特性,以及它们在不同场景下的应用建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     在Flex中列表组件(DataGridBase, List, TileBase ),数据容器(DataGroup和SkinableDataContainer),都提供了dataProvider属性,我们可以将数据源绑定到这个属性上,让组件按照所需的格式来显示数据。

但是mx组件和spark组件所接受的dataProvider类型是不同的,mx的类型是Object,spark类型是IList。

    mx中列表组件继承自ListBase类,如下代码是设置数据源的。

   

 public function set dataProvider(value:Object):void
    {
        if (collection)
        {
            collection.removeEventListener(CollectionEvent.COLLECTION_CHANGE, collectionChangeHandler);
        }

        if (value is Array)
        {
            collection = new ArrayCollection(value as Array);
        }
        else if (value is ICollectionView)
        {
            collection = ICollectionView(value);
        }
        else if (value is IList)
        {
            collection = new ListCollectionView(IList(value));
        }
        else if (value is XMLList)
        {
            collection = new XMLListCollection(value as XMLList);
        }
        else if (value is XML)
        {
            var xl:XMLList = new XMLList();
            xl += value;
            collection = new XMLListCollection(xl);
        }
        else
        {
            // convert it to an array containing this one item
            var tmp:Array = [];
            if (value != null)
                tmp.push(value);
            collection = new ArrayCollection(tmp);
        }
}

 、

  从上面的代码可以看到列表组件支持的数据类型有Array、ICollectionView、XMLListCollection、ArrayCollection等。

 

 在spark中,dataProvider类型必须是IList类型。 ArrayList, AsyncListView, ListCollectionView 类实现了IList接口,但是Array类没有实现IList接口,因此在sprak中Array就不能做为列表组件的数据源。

 

 ArrayList 类是使用后备 Array 作为数据源的 IList 的一个简单实现,也就是说,它比ArrayCollection更轻量级,想ArrayCollection具备的过滤,排序等功能,ArrayList是不具备的。如果您用不到ArrayCollection的一些复杂功能,可以使用ArrayList来获取更好的执行效率。

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值