【问题标题】:Limiting the values in an array collection限制数组集合中的值
【发布时间】:2009-07-28 13:17:37
【问题描述】:
我有一个数组集合,我想限制为 100 个项目。我尝试在返回的地方设置一个过滤函数:
return (myAC.getItemIndex(item) > 100);
但该值始终为 -1。无论出于何种原因,它都找不到该项目,即使该项目确实存在。
我可以通过 while 循环来做到这一点:
while(myAC.length > 100) myAC.removeItemAt(100);
还有其他方法可以做到这一点吗?谢谢!
【问题讨论】:
标签:
apache-flex
actionscript-3
【解决方案1】:
嗯,我能想到的最好办法是:
myAC = new ArrayCollection( myAC.toArray().slice(0,100) );
当然,如果你能在ArrayCollection第一次构造的时候控制大小,那就更好了。
请注意,您不能直接操作对象的source 属性。来自ArrayCollection 的source 属性的文档:
ArrayCollection 中的数据源。 ArrayCollection 对象不代表您直接对源数组所做的任何更改。始终使用 ICollectionView 或 IList 方法来修改集合。
【解决方案2】:
试试这样的:
myAc = new ArrayCollection(myAC.source.slice(0,100));
所以没有测试这个
【解决方案3】:
首先,您的“>”在您的第一行代码中应该是“
不确定,但这是一个开始
【解决方案4】:
我会将 ArrayCollection 包装在一个名为 LimitedArrayCollection 的类中,该类将限制作为可选的编译器参数。然后覆盖会影响此类功能的适当公共方法(addItem 等)。从开发和重用的角度来看,这将变得更加清晰。它将消除您在尝试使用过滤器或其他巧妙方法时不可避免地会遇到的任何歧义。