【发布时间】:2012-03-09 14:03:31
【问题描述】:
是否可以定义一个属性来限制将出现在 mx:List 中的元素数量?我已阅读有关设置属性 rowCount 的信息,但没有看到任何效果。 可以应用过滤器来完成此操作吗?我的意图是避免从列表/数组集合中删除项目,而只是“隐藏”它们。这个可以吗?
【问题讨论】:
标签: apache-flex list hide elements
是否可以定义一个属性来限制将出现在 mx:List 中的元素数量?我已阅读有关设置属性 rowCount 的信息,但没有看到任何效果。 可以应用过滤器来完成此操作吗?我的意图是避免从列表/数组集合中删除项目,而只是“隐藏”它们。这个可以吗?
【问题讨论】:
标签: apache-flex list hide elements
您可以通过使用 Collection 类(例如 ArrayCollection)并过滤数据来“隐藏”基于 List 的类中的项目,而无需修改底层源数据。
阅读这些docs on Collection filtering。
引用:
您使用过滤器功能将集合中的数据视图限制为 源数据对象的子集。该函数必须采用单个 对象参数,对应一个集合项,必须 返回一个布尔值,指定是否将项目包含在 看法。与排序一样,当您指定或更改过滤器功能时, 您必须在集合上调用 refresh() 方法才能显示 过滤结果。将字符串数组的集合视图限制为 仅包含以 M 开头的字符串,例如,使用以下 过滤功能:
public function stateFilterFunc(item:Object):Boolean
{
return item >= "M" && item < "N";
}
【讨论】:
另一种选择是使用新的数组集合并从大数组集合中获取有限的项目:
//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) );
(仍然使用过滤器是更优雅的解决方案)
【讨论】: