You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@royale.apache.org by co...@cristallium.com on 2025/09/17 09:29:59 UTC

setting jewel itemrenderer at runtime with as3

Hi,

Until now I used this code to use an itemRenderer with a <j:List>

  <fx:Style>
         @namespace "http://www.w3.org/1999/xhtml";
         @namespace j "library://ns.apache.org/royale/jewel";
         .MyplayImageListItemRenderer
         {
             IItemRenderer: 
ClassReference("itemRenderers.MyplayImageListItemRenderer");
         }
  </fx:Style>
...

<j:List localId="lst_hcontent" className="MyplayImageListItemRenderer"/>

And the ItemRenderer class :

<j:ListItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
     xmlns:j="library://ns.apache.org/royale/jewel"
     xmlns:js="library://ns.apache.org/royale/basic"
     xmlns="http://www.w3.org/1999/xhtml"
     >

<j:Image localId="bmp" />
...

override public function set data(value:Object):void {
bmp.src = ...
}

</j:ListItemRenderer>

This is working great.

Now I need to set itemRenderer at runtime. I struggle to do it.

I tried the classic way before setting the dataprovider :

lst_hcontent.itemRenderer = new 
ClassFactory(MyplayImageListItemRenderer);

But it doesn't work

Also tried this code :

  var factory:ClassFactory = new 
ClassFactory(MyplayImageListItemRenderer);
  factory.generator = MyplayImageListItemRenderer;
  var dataIRBead:DataItemRendererFactoryForCollectionView = new 
DataItemRendererFactoryForCollectionView(factory);
  lst_hcontent.addBead(dataIRBead);

But in both case the itemRenderer is ignored.

I also tried to affect className at runtime like this :

lst_hcontent.className = "HBrowserItemMyPlayListRenderer";
But doesn't work

Could I have some help on doing it ? Thanks