         {
             myItemRenderer = IVisualElement(item);
         }
-        
+
+        // Set the renderer's data to the item, but only if the item and renderer are different
+        if ((myItemRenderer is IDataRenderer) && (myItemRenderer != item))
+            IDataRenderer(myItemRenderer).data = item;   
+                    
         // Couldn't find item renderer.  Throw an RTE.
         if (!myItemRenderer)
         {

import mx.core.IFactory;
import mx.core.IVisualElement;
import mx.core.mx_internal;
import mx.events.CollectionEvent;
import mx.events.CollectionEventKind;
import mx.events.ItemExistenceChangedEvent;
import mx.layout.ILayoutElement;
import mx.layout.LayoutElementFactory;

/**
 *  Dispatched when an item is added to the content holder.

    
    private var itemRendererRegistry:Array = [];
    
    //--------------------------------------------------------------------------
    //
    //  Properties
    //
    //--------------------------------------------------------------------------
    
    //----------------------------------
    //  typicalItem
    //----------------------------------

    private var _typicalItem:Object = null;
    private var typicalItemChanged:Boolean = false;
    private var typicalLayoutElement:ILayoutElement = null;

    /**
     *  Layouts use the preferred size of the corresponding ILayoutElement 
     *  when fixed row/column sizes are requested but a specific 
     *  rowHeight or columnWidth isn't provided.
     * 
     *  Similarly virtual layouts use this item to define the size 
     *  of layout elements that have not been scrolled into view.
     *
     *  Setting this property sets the typicalLayoutElement property
     *  of the layout.
     * 
     *  @default null
     */
    public function get typicalItem():Object
    {
        return _typicalItem;
    }

    /**
     *  @private
     */
    public function set typicalItem(value:Object):void
    {
        if (_typicalItem == value)
            return;
        _typicalItem = value;
        typicalItemChanged = true;
        invalidateProperties();
    }
    
    private function initializeTypicalItem():void
    {
        var itemRenderer:DisplayObject = DisplayObject(createRendererForItem(_typicalItem));     
        super.addChild(itemRenderer)            
        if (itemRenderer is IInvalidating)
            IInvalidating(itemRenderer).validateNow();
        typicalLayoutElement = LayoutElementFactory.getLayoutElementFor(itemRenderer);
        if (layout)
            layout.typicalLayoutElement = typicalLayoutElement;    
        super.removeChild(itemRenderer);
    }    

    //----------------------------------
    //  layout
    //----------------------------------

    /**
     *  @private
     *  Sync the typicalLayoutElement var with this group's layout.
     */    
    override public function set layout(value:LayoutBase):void
    {
        var oldLayout:LayoutBase = layout;
        if (value == oldLayout)
            return; 

        super.layout = value;    
        if (oldLayout)
            oldLayout.typicalLayoutElement = null;
        if (value)
            value.typicalLayoutElement = typicalLayoutElement;
    } 
    
    //----------------------------------
    //  itemRenderer
    //----------------------------------
