Flex Appel ItemRenderer l'intérieur d'un nouveau panneau ()
-
18-09-2019 - |
Question
J'ai la fonction ci-dessous la création de nouveaux panneaux dans mon ViewStack .. Cela fonctionne bien et ils sont grands .. Cependant, je suis en train de mettre un peu de contenu dans les panneaux, mais je suis à défaut.
private function viewstack_addChild(name:String):void {
//if (accordion.numChildren < MAX_CHILDREN) {
var p:Panel = new Panel();
p.id = name;
p.name = name;
p.title = name;
p.percentWidth = 100;
p.percentHeight = 100;
var display:PageItemRenderer = new PageItemRenderer;
p.finishPrint(display);
var randColor:uint = Math.random() * 0xFFFFFF;
p.setStyle("backgroundColor", randColor);
myViewStack.addChild(p);
//myViewStack.selectedChild = p;
//}
}
J'ai une coutume itemRenderer appelé PageItemRenderer qui acceptera les données XML et l'afficher, mais je ne peux pas comprendre comment appeler le moteur de rendu pour chaque panneau ..
Toute aide serait grandement appréciée.
EDIT: Ajout PageItemRenderer.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox
height="100%"
width="100%"
xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:HBox width="100%" height="100%">
<mx:VBox height="100%" width="20%" horizontalAlign="center" verticalAlign="middle">
<!-- software image -->
<mx:Image source="{data.image}" width="90%" height="90%"/>
</mx:VBox>
<!-- person's name -->
<mx:VBox height="100%" width="80%" horizontalAlign="left" verticalAlign="middle">
<mx:Label width="100%" height="100%" text="{data.name} {data.version}" color="#FFAE00"/>
<mx:Label width="100%" height="100%" text="{data.description}" color="#FFFFFF"/>
</mx:VBox>
</mx:HBox>
</mx:HBox>
La solution
Le Panel
est juste une classe de conteneur, et votre PageItemRenderer
doit étendre certaines UIComponent
, si juste le faire dans votre méthode viewstack_addChild
:
var p:Panel = new Panel();
// set the properties on p
var pR:PageItemRenderer = new PageItemRenderer();
var data:Object;
// Do something to get the data to be displayed;
pR.data = data;
p.addChild(pR);
myViewStack.addChild(p);
EDIT: changé pR.setData
à pR.data
EDIT: changé pR.data(data)
à pR.data = data
;