Apache flex 按内部类对数组集合进行Flex排序

Apache flex 按内部类对数组集合进行Flex排序,apache-flex,sorting,actionscript,flex4,Apache Flex,Sorting,Actionscript,Flex4,我想以一种我不确定是否可能的方式对数组集合进行排序 通常,当你想分类时,你会有这样的东西 var dataSortField1:SortField = new SortField(); dataSortField1.name = fieldOneToSortBy; dataSortField1.numeric = fieldOneIsNumeric; var dataSort:Sort = new Sort(); dataSort.fields = [dataSortField1]; arr

我想以一种我不确定是否可能的方式对数组集合进行排序

通常,当你想分类时,你会有这样的东西

var dataSortField1:SortField = new SortField();
dataSortField1.name = fieldOneToSortBy;
dataSortField1.numeric = fieldOneIsNumeric;

var dataSort:Sort = new Sort();
dataSort.fields = [dataSortField1];

arrayCollection.sort = dataSort;
arrayCollection.refresh();
如果我有课

public class ToSort {
    public var int:a
}
我会打字

var ts1:ToSort = new ToSort();  
ts1.a = 10;
var ts2:ToSort = new ToSort();  
ts2.a = 20;
var arrayCollection:ArrayCollection = new ArrayCollection([ts1, ts2])
var dataSortField1:SortField = new SortField();
dataSortField1.name = "a";
dataSortField1.numeric = true;

var dataSort:Sort = new Sort();
dataSort.fields = [dataSortField1];

arrayCollection.sort = dataSort;
arrayCollection.refresh();
这个很好用。我的问题是,我现在继承了一个类,该类中有另一个类,我还需要对此进行排序。 比如说

public class ToSort2 {
    public var int:a
    public var ToSortInner: inner1
}

public class ToSortInner {
    public var int:aa
    public var int:bb
}
如果a在多个类中是相同的,那么我想排序到Ortiner2.aa,这是可能的。我试图将inner1.aa作为排序字段名传入,但这不起作用

希望这是清楚的。如果没有,我会发布更多的代码


谢谢,Sort还有另一个属性compareFunction。

您需要编写一个自定义排序。您可以深入到函数中的对象属性

在概念上类似于这样:

public function aSort(a:Object, b:Object, fields:Array = null):int{
  if(a.aa is b.aa){
    return 0
  } else if(a.aa > b.aa) {
    return 1
  } else{
    return -1
  }
}
创建排序对象时,可以指定比较函数:

var dataSort:Sort = new Sort();
dataSort.compareFunction = aSort;

arrayCollection.sort = dataSort;
arrayCollection.refresh();