Hi Carlos I'd looked at your example, and it works fine when we're rendering a "List" control, but if you change your "j:List" into "j:ComboBox" then the renderer is no longer used...
Perhaps we need to set the renderer up on the list object that's generated manually .. but setting this via the "itemRenderer" property is what we'd tried and it didn't work, as the framework then seems to think that this is actually a factory object rather than a renderer (bearing in mind too that the MXML has already been parsed and so this 'property' is already set up as a hierarchy of display objects, rather than being a class that's used as the constructor for each renderer object..) I'll see if I can develop the Tour de Jewel example to get that simpler case working first perhaps... thanks Andrew -----Original Message----- From: Carlos Rovira <[email protected]> Sent: 22 July 2019 16:32 To: [email protected] Subject: [EXTERNAL] Re: ComboBox list-item renderer Hi Andrew, for this one in Royale it use to be done in CSS. For example in tour de jewel for List we do: Source code in GitHub <https://clicktime.symantec.com/35oKmCet9NJTZrZZRiqcmBC7Vc?u=https%3A%2F%2Fgithub.com%2Fapache%2Froyale-asjs%2Fblob%2Fdevelop%2Fexamples%2Froyale%2FTourDeJewel%2Fsrc%2Fmain%2Froyale%2FListPlayGround.mxml> <j:List id="iconList" width="200" height="300" className=" iconListItemRenderer" labelField="label"> and in iconListItemRenderer you can find .iconListItemRenderer { IItemRenderer: ClassReference("itemRenderers.IconListItemRenderer"); } but as well we should can do as inline in MXML, so if that does not work it's a bug to solve I think... HTH Carlos El lun., 22 jul. 2019 a las 17:14, Frost, Andrew (<[email protected]>) escribió: > Hi again > > Just in case someone's already done this and knows already how to set > it > up: we want to have an itemRenderer for the ListView part of a > ComboBox control, i.e. when you click on the ComboBox button and it > creates the ListView, we need a custom renderer. Currently it's > defaulting to StringItemRenderer (from the call [1] within the default > ItemRendererClassFactory), but we want it instead to use the inline > MXML [2]. > > I'm hoping that we can set this up by adding a bead of some sort to > the ComboBox element that will tell it what item renderer to use; all > the item renderer examples I can find are just using a list view > directly rather than being something that's set up via a ComboBox. So > far we've created a custom View for the ComboBox and we are > controlling the creation of the ListView, but this creation doesn't > then set up any of the MXMLDescriptor values which are needed for this to > work... > > Hope that makes sense. Don't worry if not, we'll get to the bottom of > it, but I wondered if someone already had done this and knew how to do > it :-) > > thanks > > Andrew > > > > [1] Current way ItemRenderClassFactory selects the item renderer: > if (_strand is IItemRendererProvider && (_strand as > IItemRendererProvider).itemRenderer) { ... } else { > var itemRendererClass:Class = > ValuesManager.valuesImpl.getValue(_strand, "iItemRenderer") as Class; > <<<<< we're getting StringItemRenderer here > if (itemRendererClass) { ... } > else if (!MXMLDescriptor) { ... } > <<< we want it to hit this point i.e. not get set up because it > falls through and then uses the MXMLDescriptor value > > [2] Our code: > <mx:ComboBox width="100" dataProvider="{val}" labelField="subval1"> > <mx:itemRenderer> > <js:ItemRendererClassFactory> <<<< was "fx:Component" > <mx:HBox width="100%" horizontalScrollPolicy="off"> ... layout > in here ... </mx:HBox> > </js:ItemRendererClassFactory> > </mx:itemRenderer> > </mx:ComboBox> > > > > > -- Carlos Rovira https://clicktime.symantec.com/3S223MPUyE5DVmaKDho7sg57Vc?u=http%3A%2F%2Fabout.me%2Fcarlosrovira
