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>>
