Múltiples Item Renderers en un DataGroup
Lunes, octubre 18, 2010
Interesante receta que me encontré en el Cookbook, pongan atención en la propiedad itemRendererFunction del DataGroup.
NOTA: Útil para renders más complejos.
< ?xml version="1.0" encoding="utf-8"?>
<s:group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="init()">
<fx:declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:declarations>
<fx:script>
< ![CDATA[
import com.flexeando.multipleitemrenderers.render.FemeninoItemRender;
import com.flexeando.multipleitemrenderers.render.MasculinoItemRender;
import mx.collections.ArrayCollection;
import mx.utils.ObjectProxy;
[Bindable]
private var arrDataProvider:ArrayCollection = new ArrayCollection();
private var object:ObjectProxy;
private function init():void
{
for (var i:uint = 0; i < 20; i++)
{
object = new ObjectProxy();
object.name = "Nombre + " + i;
object.lastName = "Apellido + " + i;
if (i % 2 == 0)
object.sexo = "H";
else
object.sexo = "M";
arrDataProvider.addItem(object);
}
}
private function getItemRender(o:Object):IFactory
{
var clazz:Class;
switch (o.sexo)
{
case "M":
clazz = FemeninoItemRender;
break;
case "H":
clazz = MasculinoItemRender;
break;
}
return new ClassFactory(clazz);
}
]]>
</fx:script>
<s:datagroup height="600" width="100"
dataProvider="{arrDataProvider}"
itemRenderer="com.flexeando.multipleitemrenderers.render.FemeninoItemRender"
itemRendererFunction="getItemRender">
<s:layout>
<s:verticallayout />
</s:layout>
</s:datagroup>
</s:group>







