我的情况是List显示上传对象的队列:
public class Upload
{
public var type:String; // Update or Create
public var title:String;
public var message:String;
...
}
因此,列表数据提供者看起来像:
var arrayCol:ArrayCollection = new ArrayCollection(
{new Upload("Upload", "blah"),
new Upload("Create", "blah2")});
list.dataProvider = arrayCol;
我想创建列表的三个不同视图:
Upload.type == "Update"
Upload.type == "Create"
的项目。 另一个例子是电子邮件收件箱,我们可以在其中过滤“全部,未读或读取”。
我意识到我可以创建三个不同的列表,每个列表一个列表(也许我只是挑剔)但我想知道:
是否有任何简单的方法可以根据参数有条件地从DataProvider中选择要显示的项目(例如type =="Upload"
),所以我不必处理三个单独的ArrayCollections?
如果没有,它就是3个不同的列表和3个ArrayCollections!
答案 0 :(得分:2)
为什么不根据the documentation切换和应用不同的ArrayCollection
filterFunction
?
答案 1 :(得分:2)
您想查看Array Collection上的过滤器函数属性。您可以将过滤器分配给将在上载时查看属性的函数,并有条件地确定它是否应包含在集合中。使用过滤器函数集和对集合调用的refresh(),对象的子集将显示在ArrayCollection中,但原件不会丢失。只需清除过滤器,然后在ArrayCollection上调用refresh()就会将其返回到原始集合。
var arrayCol:ArrayCollection = new ArrayCollection(
{new Upload("Upload", "blah"),
new Upload("Create", "blah2")});
arrayCol.filterFunction = filterCompleted;
arrayCol.refresh();
然后您的过滤器功能将类似于:
private function filterCompleted(item:Object):Boolean{
if(Upload(item).isComplete)
return true;
return false;
}