Did you find a solution?
My fix is less than ideal. As far as I can tell, you have 2 options (reimplement ListCollectionView or monkey patch it). The place where all the magic happens is a private method so there is no clean way to extend class.
Make your own ArrayCollection and ListCollectionView and modify them. You can just copy paste them and use as your own. This is a lot of work if you want to replace them correctly so might be easier to just monkey patch them (copy paste classes exactly into your own project and make folders like mx.collections.aaa) google flex monkey patch for more info.
Here is what I did.
I introduced a new variable to ListCollectionView.as
* Prevents collection from reordering itself when values change, list is only re-ordered on refresh()
public var enablePostSortReorder:Boolean = true; //this is what framwork does by default, set to false to do what you want but better do this in yoru ArrayColleciton class (see below)
In private function handlePropertyChangeEvents(events:Array):void
if (sort || filterFunction != null)
if (enablePostSortReorder && (sort || filterFunction != null))
You will probably also want to extend ArrayCollection. i.e.
public class CustomArrayCollection extends ArrayCollection
public function CustomArrayCollection(source:Array = null)
enablePostSortReorder = false;
this.source = source;
Hope this helps you, I've been using this solution for a while now in a very big ADG.
Thanks for supplying your code changes. Based on these changes, it looks like you do not allow sorting by clicking on the column header. Is this assumption accurate?
Just curious, how many rows and columns do you have in this big ADG? The reason I ask is that one of my ADG has 20 columns and has up to 30,000 rows. It's painfully slow when you need to sort the data and we are trying to figure how to redesign it.