Flex Blog

Search:
  • Home
  • Examples
    • Thumb

      Flex Examples

      Check out our Flex Examples!

    • Thumb

      Flash Builder Examples

      Check out our Flash Builder Examples!

    • Thumb

      AIR Examples

      Check out our AIR Examples!

    • Thumb

      Flex Mobile Examples

      Check out our Flex Mobile Examples!

    Adobe® Flex, Adobe® Flash Builder and Adobe® AIR are registered trademarks of Adobe Systems.
  • Components
    • Thumb

      WP Flex Contact Form

      Check out our WP Flex Contact Form!

    • Thumb

      Flash CountDown Plugin

      Check out our Flash CountDown Plugin!

    This is an overview of all our Flash/Flex based Components.
  • Jobs
  • Flex Books
  • Forum
  • Contact Us
Subscribe to Flex BlogSubscribe
  • Examples
  • iOS
Browse > Home / Examples / Looping over an ArrayCollection with Cursor Example

Looping over an ArrayCollection with Cursor Example

10 November 2009

Line Break

Author: Arjan (47 Articles) - Author Website

Arjan is a SAP Consultant specialized in ABAP and Front End development techniques like Web Dynpro, Adobe Interactive Forms, Flex and AIR. In his free time he likes to create examples for Flex-Blog and other applications using Flex, AIR and PHP. Other hobbies are movies and music. He is also the co-owner of Flex-Blog.com.


There are different ways to loop over an ArrayCollection, the two approaches that are used to most are (I think) the folling two:

1
2
3
4
5
// Assuming that I have a declared variable "ac" of type ArrayCollection which is not null
for( var i:int=0; i<ac.length; i++ )
{
    //Do something here
}

and

1
2
3
4
for each( var obj:Object in ac )
{
    //Do something here
}

Works fine of course, but if you are, for example, searching for something in the collection you still have to get the current item from the collection etc. etc. So is there a better way? Yes there is.

Until recently, I didn’t even know that the Flex ArrayCollection actually has a method that’s called createCursor(). Using this method you can create a cursor on you ArrayCollection that you can control by calling methods on the cursor Object.

Here’s how you create the cursor:

1
2
3
4
5
6
7
8
9
import mx.collections.IViewCursor;

[Bindable]
private var cursor:IViewCursor;

private function init():void
{
    cursor=arrayCollection.createCursor();
}

Once you have your cursor declared, you can use it to loop over your ArrayCollection like this:

1
2
3
4
5
6
7
while(!cursor.afterLast)
{
    // trace the name of the object the cursor is "on" at the moment
    // ( object must have a name attribute for this to work :) )
    trace(cursor.current.name);
    cursor.moveNext();
}

As you can see, you have immediate access to the current item and you don’t have to use something like arrayCollection.getItemAt(i) to access it!

Check out the following example to see some more methods that the cursor has (insert and remove). Use right-mouse->view source to see the source code.

Related posts:

  1. ArrayCollection Filter Example
  2. Set busy Cursor using the CursorManager
  3. Set custom cursor using the CursorManager
  4. Drag and Drop from DataGrid or AdvancedDataGrid to Tree
  5. Style AdvancedDataGrid depending on data example

Written by Arjan · Filed Under Examples 

Was this post useful to you?

Please rate this post, follow us @ twitter, or link to this page from your website!

1 Star2 Stars3 Stars4 Stars5 Stars (7 votes, average: 4.29 out of 5)
Loading ... Loading ...

6475b94420b6829ffa4026dbd030f8dfdelicious

Comments

4 Responses to “Looping over an ArrayCollection with Cursor Example”

  1. Geoffrey McRae on December 1st, 2009 5:33 am

    Excellent! just what i was looking for, thanks

    I have found a gotchya in this though, if you use “disableAutoUpdate” before entering the lopp, when removing items, the cursor does not get updated properly and you will exit the loop early.

  2. Louis on January 13th, 2010 11:27 am

    I’m using a cursor to navigate in the datagrid rows.
    My problem is that the datagrid has as itemrender the following

    Now I need to catch for each row of the datagrid the selected value of the combobox when the user clicks on a button external to the datagrid.
    How can I do this?
    I have tryied with the cursor but how can I catch the combobox value?:

    while( !cursor.afterLast )
    {
    // Access each column field like: cursor.current.MyFieldName
    mx.controls.Alert.show(cursor.current.????)
    // Obviously don’t forget to move to next row:
    cursor.moveNext();
    }

  3. Arjan Nieuwenhuizen on January 13th, 2010 3:04 pm

    Hi Louis,

    You have to specify the dataField of the DataGridColumn of the column in which you have the ComboBox itemrenderer behind the current object: cursor.current.[dataField value]

    The current statement refers to the complete object in the original ArrayCollection, to get the value you should refer to the correct attribute from that object…

    Hope this solves your problem.

    - Arjan

  4. Joachim on July 10th, 2011 8:04 pm

    Hi,

    I have a problem using XML and Arraycollection and populating a DataGroup (formerly repeater). I use the Model object to get the XML and fill the Arraycollection. The ItemRenderer for the DataGroup has a Canvas, which is used as Buttons with labels and images. All the data are correctly retrieved from the original xml using the data.xxx syntax for the Arraycollection. However, I have associated mousehandlers with the Canvas and only the last Button in the Array has got the eventhandlers but not the others.

    Is there a way to resolve this?

Get Adobe Flash player

  • +1?

  • Support Flex Blog!

  • $ 13 raised
    • 2012/01/13 8:22 PM Russell Brown donated $ 3.00
    • 2011/10/31 4:43 PM Steve Dakin donated $ 5.00
    • 2011/05/11 3:37 PM Roelof Albers donated $ 5.00
  • Stay in touch!

  • Popular Tags

    • AdvancedDataGrid
    • AIR
    • ArrayCollection
    • baseColor
    • Button
    • CursorManager
    • DataGrid
    • Dynamic
    • Effects
    • File
    • FileStream
    • Flash Builder
    • Flash Builder 4
    • Flex 4
    • Flex Mobile
    • Framework
    • Icon
    • Image
    • itemRenderer
    • LinkBar
    • Mobile
    • PHP
    • ProgressBar
    • Repeater
    • Style
    • SWIZ
    • Timer
    • Tree
    • Twitter
    • ViewStack
  • Advertisements

  • Recent Posts

    • Spooky Frenzy – iPad Game
    • Fountain Example
    • Reading & Writing files in Adobe AIR
    • CheckBox in List using MobileIconItemRenderer for Flex Mobile
    • Data Dependent decoratorClass in MobileIconItemRenderer Example
    • Flex 4 Resize Effect Example
    • Jump to next field using the Focus Manager
    • Searching Data using a Class Example
    • Flex Mobile: Two finger tap gesture to toggle actionBar visibility in a View (AIR for Android)
    • TabbedMobileApplication Example in Flex Mobile (AIR for Android)
  • Categories

    • Examples
    • Guest Poster
    • iOS
  • Archives

    • September 2011
    • July 2011
    • May 2011
    • March 2011
    • February 2011
    • November 2010
    • October 2010
    • September 2010
    • August 2010
    • June 2010
    • May 2010
    • April 2010
    • March 2010
    • February 2010
    • January 2010
    • December 2009
    • November 2009
    • October 2009
    • March 2009
    • February 2009
  • Blogroll

    • Adobe Flex Jobs
    • NL for Business
  • Meta

    • Register
    • Log in
    • WordPress
    • XHTML

Copyright © 2010 Flex Blog · AdobeĀ® and AdobeĀ® Flex are registered trademarks of Adobe Systems.

WordPress Adobe Flex Adobe Flash Builder Adobe AIR Creative Commons License

  • Popular Posts

    • Progressbar in Datagrid Example 13 votes, average: 5.00 out of 513 votes, average: 5.00 out of 513 votes, average: 5.00 out of 513 votes, average: 5.00 out of 513 votes, average: 5.00 out of 5 (5.00 out of 5)
    • Data Dependant Tree Icon with Tree in AdvancedDataGrid with iconFunction 8 votes, average: 5.00 out of 58 votes, average: 5.00 out of 58 votes, average: 5.00 out of 58 votes, average: 5.00 out of 58 votes, average: 5.00 out of 5 (5.00 out of 5)
    • List Directory with AIR in Flex 4 7 votes, average: 5.00 out of 57 votes, average: 5.00 out of 57 votes, average: 5.00 out of 57 votes, average: 5.00 out of 57 votes, average: 5.00 out of 5 (5.00 out of 5)
    • Flex FlashVars in AS3 Example 7 votes, average: 5.00 out of 57 votes, average: 5.00 out of 57 votes, average: 5.00 out of 57 votes, average: 5.00 out of 57 votes, average: 5.00 out of 5 (5.00 out of 5)
    • Flex Dynamic Chart Example 4 votes, average: 5.00 out of 54 votes, average: 5.00 out of 54 votes, average: 5.00 out of 54 votes, average: 5.00 out of 54 votes, average: 5.00 out of 5 (5.00 out of 5)