ich mit diesem Problem zu verfing, fand ich Ihre Frage, und ich kann es immer noch nur knapp sein Ziel zu bekommen, wie Christophe gelöst empfohlen.
Nachdem ich eine Zeit lang damit zu leiden hatte, entdeckte ich einen Weg, die von Ihnen erwähnten Probleme zu vermeiden.
Verwenden Sie einfach eine zusätzliche ArrayCollection für die Sortierung. Wie dem auch sei, Ihre Sort-Instanz scheint nur temporär zu sein (Sie möchten es durchgehen), warum also nicht eine temporäre ArrayCollection verwenden?
Hier ist, wie mein Code aussah:
// myArrayCollection is the one to sort
// Create the sorter
var alphabeticSort:ISort = new Sort();
var sortfieldFirstName:ISortField = new SortField("firstName",true);
var sortfieldLastName:ISortField = new SortField("lastName",true);
alphabeticSort.fields = [sortfieldFirstName, sortfieldLastName];
// Copy myArrayCollection to aux
var aux:ArrayCollection = new ArrayCollection();
while (myArrayCollection.length > 0) {
aux.addItem(myArrayCollection.removeItemAt(0));
}
// Sort the aux
var previousSort:ISort = aux.sort;
aux.sort = alphabeticSort;
aux.refresh();
aux.sort = previousSort;
// Copy aux to myArrayCollection
var auxLength:int = aux.length;
while (auxLength > 0) {
myArrayCollection.addItemAt(aux.removeItemAt(auxLength - 1), 0);
auxLength--;
}
Es ist nicht das sauberste Code, es einige seltsame Hacks wie auxLength statt aux.length hat (dieses hat mir -1 Array-Bereich Ausnahme), aber Wenigstens hat es mein Problem gelöst.
Hum ... eigentlich, wenn ich 'sort = null 'und versuchen, die' ArrayCollection' zu bearbeiten, bekomme ich eine Ausnahme. Wenn ich 'ArrayCollection.refresh()' nicht aufruft, aber wenn ich das tue, obwohl "sort" "null" ist, werden die Daten sortiert. Ich stecke fest: p – nununo
Ich bekomme das gleiche Verhalten wie du @nununo. Hast du herausgefunden, was passiert ist? –
Ya, das gleiche hier. Ich habe gerade die ArrayCollection selbst sortiert. Lame. – jonnysamps