Some of my Flex developer friends are getting some problem in creating a list that has uses a MobileIconItemRenderer that has a decoratorClass that depends on the data here is a simple example which clears your every doubt and error
For Starting Create a new Mobile Flex Project, give it a name and click finish. Navigator to the default home view and add a list, dataprovider and a method that creates some dummy data:
[Bindable]
// Generate dummy data
First create an assets package and add three icons to it, you can find the icons here.
You can see that the list uses an itemRenderer, create it by creating a new MXML component that’s based on MobileIconItemRenderer in the views package, name it ListItemRenderer. Add the following code to it:
For Starting Create a new Mobile Flex Project, give it a name and click finish. Navigator to the default home view and add a list, dataprovider and a method that creates some dummy data:
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
title="MobileIconItemRenderer" initialize="init()">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
private var items:ArrayCollection;
private function init():void
{
items = new ArrayCollection();
var obj:Object;
for( var i:int=0; i<10; i++ )
{
obj = new Object(); obj.Name = "List item " + i;
obj.Description = "Description " + i;
obj.Status = i % 3;
items.addItem(obj);
} }
]]>
</fx:Script>
<s:List id="myList" dataProvider="{items}" labelField="Name"
width="100%" height="100%" itemRenderer="views.ListItemRenderer"/>
</s:View>
First create an assets package and add three icons to it, you can find the icons here.
You can see that the list uses an itemRenderer, create it by creating a new MXML component that’s based on MobileIconItemRenderer in the views package, name it ListItemRenderer. Add the following code to it:
<?xml version="1.0" encoding="utf-8"?>
<s:MobileIconItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
messageField="Description">
<fx:Script>
<![CDATA[
// Embed "Done" icon
[Embed(source="assets/done.png")]
private var iconDone:Class;
// Embed "Open" icon
[Embed(source="assets/open.png")]
private var iconOpen:Class;
// Embed "Progress" icon
[Embed(source="assets/progress.png")]
private var iconInProgress:Class;
// Set decoratorClass depending on status
override public function set data(value:Object):void
{
<s:MobileIconItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
messageField="Description">
<fx:Script>
<![CDATA[
// Embed "Done" icon
[Embed(source="assets/done.png")]
private var iconDone:Class;
// Embed "Open" icon
[Embed(source="assets/open.png")]
private var iconOpen:Class;
// Embed "Progress" icon
[Embed(source="assets/progress.png")]
private var iconInProgress:Class;
// Set decoratorClass depending on status
override public function set data(value:Object):void
{
if(value != null)
{
super.data = value;
var status:int = value.Status;
var icon:Class;
switch(status){
case 0:
icon = iconOpen;
break;
case 1:
icon = iconInProgress;
break;
case 2:
icon = iconDone;
break;
}
this.decoratorClass = icon;
}
var status:int = value.Status;
var icon:Class;
switch(status){
case 0:
icon = iconOpen;
break;
case 1:
icon = iconInProgress;
break;
case 2:
icon = iconDone;
break;
}
this.decoratorClass = icon;
}


0 comments:
Post a Comment