Список искр: отображение подмножества провайдера данных на основе параметра - PullRequest
2 голосов
/ 01 августа 2011

У меня есть ситуация, когда у меня есть Список , показывающий очередь загружаемых объектов:

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!

Ответы [ 2 ]

2 голосов
/ 01 августа 2011

Вы хотите посмотреть на свойство функции фильтра в Array Collection.Вы можете назначить фильтр для функции, которая будет проверять свойство при загрузке и условно решать, следует ли включать его в коллекцию.С установленной функцией фильтра и вызовом refresh () для коллекции подмножество объектов будет отображаться в коллекции ArrayCollection, но оригиналы не будут потеряны.Просто очистите фильтр, затем вызовите refresh () для ArrayCollection вернет его в исходную коллекцию.

        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;
        }
2 голосов
/ 01 августа 2011

Почему бы не переключаться и не применять ArrayCollection filterFunction с в соответствии с документацией ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...