Flex List限制元素数量

时间:2012-03-09 14:03:32

标签: flex list hide elements

是否可以定义一个属性来限制将出现在mx:List中的元素数量?我已经阅读过有关设置属性rowCount的内容,但我没有看到任何效果。 可以应用过滤器来实现这一目标吗?我的目的是避免从列表/数组集合中删除项目,而只是“隐藏”它们。可以这样做吗?

2 个答案:

答案 0 :(得分:2)

通过使用Collection类(如ArrayCollection)并过滤数据,您可以在基于列表的类中“隐藏”项目,而无需修改基础源数据。

阅读这些docs on Collection filtering

引用:

  

使用过滤器功能将集合中的数据视图限制为   源数据对象的子集。该功能必须单一   对象参数,对应于集合项,必须   返回一个布尔值,指定是否在该项中包含该项   视图。与排序一样,当您指定或更改过滤器功能时,   你必须调用集合上的refresh()方法来显示   过滤结果。限制字符串数组的集合视图   仅包含以M开头的字符串,例如,使用以下内容   过滤功能:

public function stateFilterFunc(item:Object):Boolean
{
    return item >= "M" && item < "N";
}

答案 1 :(得分:1)

另一种选择是使用新的arraycollection并从大数组中获取有限的项目:

//get first 10 elements
myArrayCollection = new ArrayCollection( myBigArrayCollection.toArray().slice(0,9) );

如果你想使用寻呼机,你可以拿一个计数器来跟踪用户所在的页面,并从大数组中获取下一个元素。例如:

//this is just a (very) simple example
//page = integer (counter) for knowing which page the user is on
page = 0;
page_low = page*10;
page_high = page_low + 9;
myArrayCollection = new ArrayCollection( myBigArrayCollection.toArray().slice(page_low,page_high) );

(仍使用过滤器是一种更优雅的解决方案)