10
May
08

Displaying specific items from an ArrayCollection in Flex

The following examples show how you can display specific items in a Flex ArrayCollection using the getItemAt() method and the array access operator ([]).

Full code after the jump.

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/05/10/displaying-specific-items-from-an-arraycollection-in-flex/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:ArrayCollection id="arrColl">
        <mx:source>
            <mx:Array>
                <mx:Object label="Student A" score="85" />
                <mx:Object label="Student B" score="48" />
                <mx:Object label="Student C" score="71" />
                <mx:Object label="Student D" score="88" />
                <mx:Object label="Student E" score="24" />
                <mx:Object label="Student F" score="64" />
                <mx:Object label="Student G" score="76" />
                <mx:Object label="Student H" score="76" />
                <mx:Object label="Student I" score="93" />
                <mx:Object label="Student J" score="88" />
                <mx:Object label="Student K" score="48" />
                <mx:Object label="Student L" score="76" />
            </mx:Array>
        </mx:source>
    </mx:ArrayCollection>

    <mx:ApplicationControlBar dock="true">
        <mx:HSlider id="slider"
                minimum="0"
                maximum="{arrColl.length-1}"
                liveDragging="true"
                snapInterval="1"
                tickInterval="1"
                dataTipPlacement="right" />
    </mx:ApplicationControlBar>

    <mx:Label text="{arrColl.getItemAt(slider.value).label}" />

</mx:Application>

View source is enabled in the following example.

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/05/10/displaying-specific-items-from-an-arraycollection-in-flex/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:ArrayCollection id="arrColl">
        <mx:source>
            <mx:Array>
                <mx:Object label="Student A" score="85" />
                <mx:Object label="Student B" score="48" />
                <mx:Object label="Student C" score="71" />
                <mx:Object label="Student D" score="88" />
                <mx:Object label="Student E" score="24" />
                <mx:Object label="Student F" score="64" />
                <mx:Object label="Student G" score="76" />
                <mx:Object label="Student H" score="76" />
                <mx:Object label="Student I" score="93" />
                <mx:Object label="Student J" score="88" />
                <mx:Object label="Student K" score="48" />
                <mx:Object label="Student L" score="76" />
            </mx:Array>
        </mx:source>
    </mx:ArrayCollection>

    <mx:ApplicationControlBar dock="true">
        <mx:HSlider id="slider"
                minimum="0"
                maximum="{arrColl.length-1}"
                liveDragging="true"
                snapInterval="1"
                tickInterval="1"
                dataTipPlacement="right"
                change="lbl.text = arrColl[event.value].label;" />
    </mx:ApplicationControlBar>

    <mx:Label id="lbl" />

</mx:Application>

2 Responses to “Displaying specific items from an ArrayCollection in Flex”


  1. 1 Jon Henley Sep 2nd, 2008 at 9:05 am

    Hey

    How would I use a string variable instead of the ‘label’ … if that is dynamic?

    is it possible with getItemAt?

  2. 2 peterd Sep 3rd, 2008 at 7:26 am

    Jon Henley,

    You can try using the Array access syntax to specify the field name. Something like the following:

    <mx:String id="str">score</mx:String>
    <mx:Label text="{arrColl.getItemAt(slider.value)[str]}" />
    

    Flex Builder may give you a warning saying “Data binding will not be able to detect changes when using square bracket operator. For Array, please use ArrayCollection.getItemAt() instead.”, but you can probably ignore that.

    Peter

Leave a Reply

This blog is terrible at eating HTML tags. If you plan on posting code/XML, please escape your "<" characters as "&lt;" and your ">" characters as "&gt;".