Update Array Via ICollectionView : Array « Data Model « Flex






Update Array Via ICollectionView

Update Array Via ICollectionView
         
<!--
Code from Flex 4 Documentation "Using Adobe Flex 4".

This user guide is licensed for use under the terms of the Creative Commons Attribution 
Non-Commercial 3.0 License. 

This License allows users to copy, distribute, and transmit the user guide for noncommercial 
purposes only so long as 
  (1) proper attribution to Adobe is given as the owner of the user guide; and 
  (2) any reuse or distribution of the user guide contains a notice that use of the user guide is governed by these terms. 
The best way to provide notice is to include the following link. 
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/

-->



<!-- dpcontrols\UpdateArrayViaICollectionView.mxml -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx" initialize="initData();">
    <s:layout>
        <s:VerticalLayout />
    </s:layout>
    <fx:Script>
         
        import mx.collections.*; 
        // The data provider is an array of Strings. 
        public var myArray:Array = ["AZ", "MA", "MZ", "MN", "MO", "MS"]; 
        // Declare an ArrayCollection that represents the Array. 
        // The variable must be bindable so the ComboBox can update properly. 
        [Bindable] 
        public var myAC:ArrayCollection; 
        //Boolean flag to ensure the update routine hasn't been run before. 
        public var runBefore:Boolean=false; 
        //Initialize the ArrayCollection the application initializes. 
        public function initData():void { 
            myAC = new ArrayCollection(myArray); 
        } 
        // The function to change the collection. 
        public function changeCollection():void { 
            //Running this twice without resetting causes an error. 
            if (! runBefore) { 
                runBefore=true; 
                // Get an IViewCursor object for accessing the collection data. 
                var myCursor:IViewCursor=myAC.createCursor(); 
                // Get the original collection length. 
                var oldLength:int=myAC.length; 
                // The cursor is initially at the first item; delete it. 
                var removedItem:String=String(myCursor.remove()); 
                // Add ME as the second item. 
                // The cursor is at the (new) first item; 
                // move it to the second item. 
                myCursor.moveNext(); 
                // Insert ME before the second item. 
                myCursor.insert("ME"); 
                // Add MT at the end of the collection. 
                //Use the LAST bookmark property to go to the end of the view. 
                // Add an offset of 1 to position the cursor after the last item. 
                myCursor.seek(CursorBookmark.LAST, 1); 
                myCursor.insert("MT"); 
                // Change MZ to MI. 
                // The findFirst() method requires a sorted view. 
                var sort:Sort = new Sort(); 
                myAC.sort=sort; 
                // Refresh the collection view to apply the sort. 
                myAC.refresh(); 
                // Make sure there is a MZ item, and no MI in the array. 
                if (myCursor.findFirst("MZ") && !myCursor.findFirst("MI")) { 
                    // The IViewCursor does not have a replace operation. 
                    // First, remove "MZ". 
                    myCursor.remove(); 
                    // Because the view is now sorted, the insert puts this item 
                    // in the right place in the sorted view, but at the end of 
                    // the underlying Array data provider. 
                    myCursor.insert("MI"); 
                } 
                // Get the updated collection length. 
                var newLength:int=myAC.length; 
                // Set a bookmark at the item with the value ME, 
                myCursor.findFirst("ME"); 
                var MEMark:CursorBookmark=myCursor.bookmark; 
                // Move the cursor to the last item in the Array. 
                myCursor.seek(CursorBookmark.LAST); 
                // Get the last item in the collection. 
                var lastItem:String=String(myCursor.current); 
                // Return the cursor to the bookmark position. 
                myCursor.seek(MEMark); 
                // Get the item at the cursor location. 
                var MEItem:String=String(myCursor.current); 
                // Display the information in the TextArea control. 
                ta1.text="Start Length: " + oldLength + ". End Length: " + newLength; 
                ta1.text+=".\nRemoved " + removedItem; 
                ta1.text+=".\nLast Item is " + lastItem; 
                ta1.text+=".\nItem at MEMark is " + MEItem; 
                // Show that the base Array has been changed. 
                // Notice that the Array is NOT in sorted order. 
                ta1.text+="\nThe base Array is: " + myArray.join(); 
            } // End runBefore condition 
        } 
        // Filter function used in the sortICV method to limit the range. 
        public function MEMOFilter(item:Object):Boolean { 
            return item >= "ME" && item <= "MO"; 
        } 
        // Sort the collection view in descending order, 
        // and limit the items to the range ME - MO. 
        public function sortICV():void { 
            var sort:Sort = new Sort(); 
            sort.fields=[new SortField(null, false, true)]; 
            myAC.filterFunction=MEMOFilter; 
            myAC.sort=sort; 
            // Refresh the ArrayCollection to apply the sort and filter 
            // function. 
            myAC.refresh(); 
            //Call the ComboBox selectedIndex() method to replace the "MA" 
            //in the display with the first item in the sorted view. 
            myCB.selectedIndex=0; 
            ta1.text="Sorted"; 
        } 
        //Reset the Array and update the display to run the example again. 
        public function resetView():void { 
            myArray = ["AZ", "MA", "MZ", "MN", "MO", "MS"]; 
            myAC = new ArrayCollection(myArray); 
            ta1.text="Reset"; 
            runBefore=false; 
        } 
      
    </fx:Script>
    <s:ComboBox id="myCB" dataProvider="{myAC}" />
    <s:TextArea id="ta1" height="75" width="300" />
    <s:HGroup>
        <s:Button label="Update View" click="changeCollection();" />
        <s:Button label="Sort View" click="sortICV();" />
        <s:Button label="Reset View" click="resetView();" />
    </s:HGroup>
</s:Application>

   
    
    
    
    
    
    
    
    
  








Related examples in the same category

1.Method to create an Array-based menuMethod to create an Array-based menu
2.Setting Arrays of scalar valuesSetting Arrays of scalar values
3.Number based arrayNumber based array
4. and tags around Array elements are optional<mx:Array> and </mx:Array> tags around Array elements are optional
5.Array of strings data providerArray of strings data provider
6.Define Array in ActionScript by a comma-separated list of values surrounded by bracesDefine Array in ActionScript by a comma-separated list of values surrounded by braces
7.Set style value with Array in MXML and apply those values inlineSet style value with Array in MXML and apply those values inline
8.The attribute must correspond to a property of type Object or Array.The attribute must correspond to a property of type Object or Array.
9.String value array collection
10.Binding to arraysBinding to arrays
11.Binding to array elementsBinding to array elements
12.Bind arrays to the dataProvider property of Flex controlsBind arrays to the dataProvider property of Flex controls
13.To explode one or more wedges of pie, use an Array of explodeRadius values.To explode one or more wedges of pie, use an Array of explodeRadius values.
14.Remove filters by setting the filters Array to an empty ArrayRemove filters by setting the filters Array to an empty Array
15.Set the alpha property on each entry in the Array of tagsSet the alpha property on each entry in the Array of <mx:GradientEntry> tags
16.Use a single Array of fills to specify how Flex should draw the individual wedgesUse a single Array of fills to specify how Flex should draw the individual wedges
17.Defines two Arrays of SolidColor objectsDefines two Arrays of SolidColor objects
18.Set value of the CategoryAxis object's dataProvider property to a custom Array of labelsSet value of the CategoryAxis object's dataProvider property to a custom Array of labels
19.Excludes Saturdays and Sundays from the chart by setting the value of the disabledDays property to an Array that contains 0 and 6:Excludes Saturdays and Sundays from the chart by setting the value of the disabledDays property to an Array that contains 0 and 6:
20.Create Array using tag
21.Save Popup into Array and reference it laterSave Popup into Array and reference it later
22.shows a SkinnableDataContainer displaying an Array of Strings as childrenshows a SkinnableDataContainer displaying an Array of Strings as children
23.Add, Remove, or Retrieve Data from an ArrayListAdd, Remove, or Retrieve Data from an ArrayList
24.Using ActionScript to declare and create an ArrayList objectUsing ActionScript to declare and create an ArrayList object
25.Using a static Array of objects for the data providerUsing a static Array of objects for the data provider
26.Using Array Of MXML Objects as DataProviderUsing Array Of MXML Objects as DataProvider
27.Using Array Of Verbose MXML Objects as DataProviderUsing Array Of Verbose MXML Objects as DataProvider
28.As with Arrays, you can use MXML to define the contents of a collectionAs with Arrays, you can use MXML to define the contents of a collection
29.Define the Array in ActionScript by using a comma-separated list of values surrounded by bracesDefine the Array in ActionScript by using a comma-separated list of values surrounded by braces
30.Set the properties that use Arrays inline.Set the properties that use Arrays inline.
31.Remove shadows by setting the chart control's seriesFilters property to an empty ArrayRemove shadows by setting the chart control's seriesFilters property to an empty Array
32.Convert Array to StringConvert Array to String
33.Use an Array of Objects to specify a label and icon for each buttonUse an Array of Objects to specify a label and icon for each button
34.Button is repeated for every element in an Array object
35.An Array of Objects specifies a label and icon for each buttonAn Array of Objects specifies a label and icon for each button
36.Get Item index at fourth positionGet Item index at fourth position