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!

    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
  • Guest Poster
  • Forum
  • Contact Us
Subscribe to Flex BlogSubscribe
  • Examples
Browse > Home / Examples / Looping over an ArrayCollection with Cursor Example

Looping over an ArrayCollection with Cursor Example

10 November 2009

Line Break

Author: Arjan (36 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?

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

Comments

3 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

Get Adobe Flash player

  • Sponsors

  • Popular Tags

    • AdvancedDataGrid
    • AIR
    • ArrayCollection
    • baseColor
    • Button
    • CursorManager
    • DataGrid
    • Dynamic
    • Effects
    • File
    • Flash Builder
    • Flash Builder 4
    • Flashvars
    • Flex 4
    • Framework
    • HSlider
    • Icon
    • Image
    • itemRenderer
    • LinkBar
    • PHP
    • ProgressBar
    • Repeater
    • Style
    • SWIZ
    • Timer
    • Tree
    • Twitter
    • ViewStack
    • VSlider
  • Flex Blog Readers

  • Flex Jobs (from Flex Jobs.org)

    Your Job here? Post your job @ Flex Jobs.org

    Advertisement

  • Recent Posts

    • SWIZ Framework in Flex 4 Example: Part I
    • Dynamic AdvancedDataGridColumn in Flex 4
    • How to make a magnetic button in Flex 4
    • Using ASDoc as an External Tool in Flash Builder 4
    • Flex Encryption (MD5, SHA1, SHA224, SHA256, HMAC)
    • The SWIZ framework for Flex 3 / Flex 4: Easy, Light and Very Powerfull
    • Call Javascript function from Flex / Flash Builder (AS3)
    • Flex FlashVars in AS3 Example
    • Data Dependant Tree Icon with Tree in AdvancedDataGrid with iconFunction
    • WordPress Flash / Flex Comments Form
  • Categories

    • Examples
    • Guest Poster
  • Archives

    • 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

    • Control Webpage in HTML Control in AIR 5 votes, average: 5.00 out of 55 votes, average: 5.00 out of 55 votes, average: 5.00 out of 55 votes, average: 5.00 out of 55 votes, average: 5.00 out of 5 (5.00 out of 5)
    • Data Dependant Tree Icon with Tree in AdvancedDataGrid with iconFunction 5 votes, average: 5.00 out of 55 votes, average: 5.00 out of 55 votes, average: 5.00 out of 55 votes, average: 5.00 out of 55 votes, average: 5.00 out of 5 (5.00 out of 5)
    • List Directory with AIR in Flex 4 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)
    • Progressbar in Datagrid 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)
    • WordPress Flash / Flex Comments Form 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)