Another option is to specify the renderer class as an mxml att [1]. 
ItemRenderers are not beads, so adding them to the beads list has no effect (it 
should actually cause an RTE).



[1] 
https://github.com/apache/royale-asjs/blob/f637c857122d56f838bab21314a11900ed0add8e/examples/royale/TodoListSampleApp/src/main/royale/sample/todo/views/TodoListView.mxml#L169



________________________________
From: Carlos Rovira <[email protected]>
Sent: Monday, July 22, 2019 6:32:27 PM
To: [email protected] <[email protected]>
Subject: 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://github.com/apache/royale-asjs/blob/develop/examples/royale/TourDeJewel/src/main/royale/ListPlayGround.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
http://about.me/carlosrovira

Reply via email to