it does. Another approach which i have taken (and I find neater, faster and more memory efficient with less emphasis on binding) is the concept of one 1 itemrenderer and several layouts which you can swop out depending on the model. This allows you to control shared resources (meaning i create the least number of fields i have to across several different itemrenderers) and get extremely intelligent about a lot more with less overhead. but hey, its personal flavour, spice of life stuff, ya know.
On Wed, Sep 1, 2010 at 8:14 PM, Wesley Acheson <wesley.ache...@gmail.com>wrote: > > > True. I'm not sure if that recycles well though? > > On Wed, Sep 1, 2010 at 3:01 PM, Johannes Nel <johannes....@gmail.com>wrote: > >> >> >> 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 <valdhorli...@embarqmail.com>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 flexcoders@yahoogroups.com <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 flexcoders@yahoogroups.com >>> > > <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 >> > > > -- j:pn \\no comment