首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当在ArrayCollection上应用filterfunction时,它不返回绝对长度

当在ArrayCollection上应用filterfunction时,它不返回绝对长度
EN

Stack Overflow用户
提问于 2011-04-24 13:49:49
回答 2查看 2K关注 0票数 0

我的网格数据提供程序是一个动态加载对象的arrayCollection。例如:一个具有persionID,PersonName ..etc的person对象。我基于personID在我的数据提供程序上应用了一个过滤函数。下面是我的函数

代码语言:javascript
复制
public function FilterFunc(item:Object):Boolean
            {
                var same:Boolean=String(item.personID ) == filterpersonID ;
                return same;
            }

每当我将filterpersonID更改为person1,person2 ..showing相应的更改时,此函数都工作得很好。但是,当我应用一个函数来限制网格上的项数时,比如

代码语言:javascript
复制
private function DPSizeHandler(dp:ArrayCollection):void
            {
                if (dp.length > 100)
                    dp.removeItemAt(0);
            }

每当将新对象添加到arraycollection中时,都会调用此函数。现在的问题是,上述函数中的dp.length只返回应用了filterFunction的特定personID的对象编号,而不是绝对值。它不会限制其他对象的大小,这些对象会导致数千个内存问题。一旦我将filterFunction更改为不同的personID,它就会慢慢地开始限制各自的personID对象。所以sizeHandler()只限制应用了filterfunction的personID对象,而不是整个对象,这就是问题所在。

附言:我正在使用blazeDS消费者组件将这些对象从JMS队列加载到arraycollection中,这是相当快的。在这个问题上如果能有任何帮助,我将不胜感激

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-24 13:55:16

更改筛选条件不会立即刷新数组集合,因此您必须首先调用dp.refresh(),它将对您的内部集合应用筛选,然后您将获得正确的长度。

票数 2
EN

Stack Overflow用户

发布于 2011-04-25 01:37:41

未过滤的原始列表长度可以通过

代码语言:javascript
复制
dp.list.length;

如果这就是你所说的“绝对”;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5768894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档