set your renderer to an IFactory. this is a pretty standard way of doing things.
On Wed, Sep 1, 2010 at 1:19 PM, valdhor <[email protected]> wrote: > > > The only computation I see is determining which component to use. With your > original idea you would still need the same computation to figure out which > (sub) item renderer to use. I still think you are trying to hide the woods > using more trees. > > > --- In [email protected] <flexcoders%40yahoogroups.com>, Wesley > Acheson <wesley.ache...@...> wrote: > > > > Yeah thats the way I've done it previously. I thought that this way would > > cut out on some additional computation. > > > > > > > > On Tue, Aug 31, 2010 at 6:04 PM, valdhor <valdhorli...@...>wrote: > > > > > > > > > > > > That seems overly complicated to me. What I would try is create two > custom > > > components then instantiate the appropriate one based on the data and > add it > > > in the updateDisplayList method. > > > > > > > > > --- In [email protected] > > > <flexcoders%40yahoogroups.com><flexcoders% > 40yahoogroups.com>, Wesley > > > > Acheson <wesley.acheson@> wrote: > > > > > > > > Since nobody has replied I'm continueing to try this. I currently > think I > > > > may need to override all methods in UI component. > > > > > > > > > > > > Is it clear what I'm trying to do? > > > > > > > > Is this the wrong way of doing it? > > > > > > > > I think its probably lighter than wrapping to components in a fully > > > fledged > > > > UI component? > > > > * > > > > Some Thoughts* > > > > > > > > Also a comment on ListItemRenderer, theres an awful lot of methods > that > > > need > > > > to be implemented to make this work. I doubt all of them are used in > a > > > List > > > > Senario. Even implementing them all theres still a dependency on > > > > DisplayObject (who's methods seem to be implemented). It does feel to > me > > > > like the architecture seems a bit off. I mean if all of those methods > are > > > > implemented why is there still a dependency on DisplayObject. > > > > > > > > Its not just enough to implement IListRenderer which seems to defeat > the > > > > purpose of an interace > > > > > > > > On Wed, Aug 18, 2010 at 11:42 PM, Wesley Acheson > > > > <wesley.acheson@>wrote: > > > > > > > > > > > > *Disclaimer:* This is a cross post with Stack Overflow. I know at > least > > > > > one person on this list saw it there. > > > > > > http://stackoverflow.com/questions/3507313/flex-switch-item-renderer > > > > > > > > > > Hi > > > > > > > > > > I was wondering if anyone had any luck with the following senario > in > > > flex. > > > > > > > > > > I'd like to be able to have a custom item renderer which delegates > to > > > > > another renderer inside. > > > > > > > > > > The reason for this would be in a datagrid for instance displaying > a > > > > > checkbox if the dataprovider for the row had a boolean value. Using > the > > > > > default item renderer when the value was a non boolean. > > > > > > > > > > Basically I was hoping to use a proxy object (though not > necessarily > > > the > > > > > proxy class) so that I could a renderer which delegated all of its > > > > > responsibilties to a sub renderer. > > > > > > > > > > Hard to explain. > > > > > > > > > > *Edit 1* > > > > > > > > > > I think the following gives a clearer idea of what I had in mind. > This > > > is > > > > > only knocked up quickly for the purpose of showing the idea. > > > > > > > > > > *SwitchingRenderer.as* > > > > > > > > > > package com.example > > > > > { > > > > > import mx.controls.CheckBox; > > > > > > > > > > import mx.controls.dataGridClasses.DataGridItemRenderer; > > > > > > > > > > import mx.controls.listClasses.BaseListData; > > > > > > > > > > import mx.controls.listClasses.IDropInListItemRenderer; > > > > > > > > > > import mx.core.IDataRenderer; > > > > > > > > > > import mx.core.UIComponent; > > > > > > > > > > public class SwitchingRenderer extends UIComponent implements > > > IDataRenderer, IDropInListItemRenderer > > > > > > > > > > { > > > > > private var checkboxRenderer:CheckBox; > > > > > > > > > > private var defaultRenderer:DataGridItemRenderer; > > > > > > > > > > private var currentRenderer:IDataRenderer; > > > > > > > > > > public function SwitchingRenderer() > > > > > > > > > > { > > > > > this.checkboxRenderer = new CheckBox(); > > > > > > > > > > this.defaultRenderer = new DataGridItemRenderer(); > > > > > > > > > > this.currentRenderer = defaultRenderer(); > > > > > > > > > > super(); > > > > > } > > > > > > > > > > public function get data():Object > > > > > > > > > > { > > > > > //If the data for this cell is a boolean > > > > > // currentRender = checkBoxRenderer > > > > > > > > > > // otherwise > > > > > // currentRenderer = defaultRenderer > > > > > } > > > > > > > > > > public function set data(value:Object):void > > > > > > > > > > { > > > > > currentRenderer.data = value; > > > > > > > > > > } > > > > > > > > > > public function get listData():BaseListData > > > > > > > > > > { > > > > > return currentRenderer.listData; > > > > > > > > > > } > > > > > > > > > > public function set listData(value:BaseListData):void > > > > > > > > > > { > > > > > currentRenderer.listData = value; > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > } > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- j:pn \\no comment

