我的网格数据提供程序是一个动态加载对象的arrayCollection。例如:一个具有persionID,PersonName ..etc的person对象。我基于personID在我的数据提供程序上应用了一个过滤函数。下面是我的函数
public function FilterFunc(item:Object):Boolean
{
var same:Boolean=String(item.personID ) == filterpersonID ;
return same;
}每当我将filterpersonID更改为person1,person2 ..showing相应的更改时,此函数都工作得很好。但是,当我应用一个函数来限制网格上的项数时,比如
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中,这是相当快的。在这个问题上如果能有任何帮助,我将不胜感激
发布于 2011-04-24 13:55:16
更改筛选条件不会立即刷新数组集合,因此您必须首先调用dp.refresh(),它将对您的内部集合应用筛选,然后您将获得正确的长度。
发布于 2011-04-25 01:37:41
未过滤的原始列表长度可以通过
dp.list.length;如果这就是你所说的“绝对”;
https://stackoverflow.com/questions/5768894
复制相似问题