On Mon, Nov 24, 2008 at 3:45 AM, bjorn <[EMAIL PROTECTED]> wrote:
> No one knows the answer to my initial question about why there is a problem
> implementing removeItemAt()/addItemAt() on a sorted AC?
Well, the cool thing about using those mx.collections.* classes, as opposed
to, for example, just using Arrays (besides binding, that is) is using a
cursor view of them so you don't really have to go counting with your fingers
where a particular item is.
If you have a sorted collection (of Point objects, lets say), you can create a
cursor and use that to find, remove, etc. whatever it is that you're looking
for.
You can quickly do stuff like:
// sort the items first by x, in descending order, then by y ascending
// (without cumbersome Array sort functions).
var customSort:Sort = new Sort();
customSort.fields = [
new SortField("x", false, true),
new SortField("y")
];
collection.sort = customSort;
collection.refresh();
// later on, you need to find the first point, according to this order, which
// has and x of 160 and and y of 130. Instead of looping through the set,
// you can use a cursor like this:
var cursor:IViewCursor = collection.createCursor();
var itemFound:Boolean = cursor.findFirst({x:160, y:130})
// now your cursor is pointing to the item you're looking for (you can check
// on it by looking at the 'current' property), if it has found it. Without
// having to worry on which index it was, you can just then say:
if (itemFound)
cursor.remove();
This is just a simple example of the sort of things that you should be using
collections for. I'd suggest a quick glance over the IViewCursor docs to see
how cool that approach is. Remember that collections (like ArrayCollection,
for example) are just particular views of rawer data sets; Their aim is just
to make your life simpler in the end.
HTH,
--
gabriel montagné láscaris comneno
http://rojored.com
t/506.8367.6794