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

Reply via email to