Сортировка коллекции ArrayCollection во Flex - PullRequest
10 голосов
/ 21 октября 2009

Есть ли способ во Flex, где мы можем отсортировать коллекцию массивов на основе строк.

У меня есть провайдер данных со строками типа "Критический", "Высокий", "Средний", "Низкий" где мне нужно отсортировать так, чтобы Critical отображался сверху, а затем следующие High, Medium и Low.

Может кто-нибудь сообщить мне какую-нибудь логику.

Спасибо, Кумар

1 Ответ

23 голосов
/ 22 октября 2009

ArrayCollection - это подкласс ListCollectionView, который имеет sort свойство . Класс Sort имеет свойство compareFunction , которое можно использовать для определения пользовательских функций сортировки.

private function sortFunction(a:Object, b:Object, array:Array = null):int
{
   //assuming that 'level' is the name of the variable in each object 
   //that holds values like "Critical", "High" etc
   var levels:Array = ["Low", "Medium", "High", "Critical"];
   var aLevel:Number = levels.indexOf(a.level);
   var bLevel:Number = levels.indexOf(b.level);
   if(aLevel == -1 || bLevel == -1)
      throw new Error("Invalid value for criticality ");
   if(aLevel == bLevel)
      return 0;
   if(aLevel > bLevel)
      return 1;
   return -1;
}
var sort:Sort = new Sort();
sort.compareFunction = sortFunction;
arrayCollection.sort = sort;
arrayCollection.refresh();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...