In general, if you have:
 
class A extends UIComponent
{
 
    private var _dataProvider:Array
    public function set dataProvider(value:Object):void
    {
        _dataProvider = value as Array;
        invalidateDisplayList();    // request that updateDisplayList be called
    }
 
    private var _itemRenderer:IFactory
    public function set itemRenderer(value:IFactory):void
    {
        _itemRenderer = value;
    }
 
...
 
Then typically in commitProperties or updateDisplayList you'll see something 
like this:
 
    override protected function updateDisplayList(unscaledWidth:Number, 
unscaledHeight:Number):void
    {
        ...
        var n:int = dataProvider.length;
        for (var i:int; i < n; i++)
        {
            // have the factory create a new renderer
            var renderer:IDataRenderer = itemRenderer.newInstance();
            // tell the renderer what data to render
            renderer.data = dataProvider[i];
            // add the renderer as a child so it can be displayed
            addChild(renderer);
            // size and position the renderer
            .....
        }
    }
 
Don't forget to toss the old renderers (or recycle them).
 
-Alex

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of 
Eric Guesdon
Sent: Thursday, February 15, 2007 11:36 AM
To: [email protected]
Subject: [flexcomponents] itemRenderer and data



Hi to all,

I'm developing a component that should accept "itemRenderer"

Expect rendering Class must implement IFactory and IDataRenderer I meet some 
difficulties to know how data is send from mainComponent.

In practice I have a component "A" that extends UIComponent and follow 
component live cycle

This component must accept ItemRenderer, like DataGridColumn accept renderer, 
so my default renderer is named B (it implements IFactory and IDataRenderer)

So A received a dataProvider but how to be sure to send, from A, 
dataProvider[0].starNumber (it is an example) to my renderer, how to be sure 
when dataProvider change that renderer.data will change

How to make that

Thanks in advance

regards

 

AlligrA

Eric Guesdon

Consultant Manager

10, rue du Dôme

92100 Boulogne Billancourt

Tel :   +33 (0) 1 46 20 95 00

Cel :   +33 (0) 6 62 61 69 72



Le conseil à suivre

 

<<attachment: image002.jpg>>

Reply via email to