Log In  
  Getting Started  
compared with
Current by matthew horn
on Apr 22, 2008 14:19.

(show comment)
 
Key
These lines were removed. This word was removed.
These lines were added. This word was added.

View page history


There are 1 changes. View first change.

 {section}
 {column:width=80%}
  
 h2. Item Renderers
  
 Each list-based control has a default item renderer. There are three types of custom item renderers
 * Drop-in - Specify a control as the value for item renderer
 * Inline - For complete control over item rendering. Use <mx:Component> tag
 * Component - Custom components written in MXML or ActionScript used as Item renderer
 {column}
 {column}
 {adbe-prev:http://learn.adobe.com/wiki/display/Flex/DataGrid}
 {adbe-next:http://learn.adobe.com/wiki/display/Flex/Lists}
 {rate:title=User rating|theme=dynamic|key=focal|display=default}
 {adbe-pod}
 h6. Learn more
 * {adbe-popup:http://blog.paranoidferret.com/index.php/2007/09/19/flex-using-item-renderers/}Flex - Using Item Renderers{adbe-popup}
 * {adbe-popup:http://ricoonflex.wordpress.com/2007/04/19/creating-a-custom-menu-using-item-renderers/}Creating a Custom Menu Using Item Renderers{adbe-popup}
 * {adbe-popup:http://livedocs.adobe.com/flex/3/html/cellrenderer_1.html}LiveDocs{adbe-popup}
 {adbe-pod}
 {column}
 {section}
 {code}
 <?xml version="1.0" encoding="utf-8"?>
 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  backgroundColor="#FFFFFF"
  backgroundAlpha="0"
  horizontalAlign="left"
  verticalGap="15" horizontalGap="15">
  <mx:Script>
  <![CDATA[
  import mx.collections.ArrayCollection;
  import mx.rpc.events.ResultEvent;
  
  [Bindable]
  private var myResult:XML;
  
  [Bindable]
  private var weatherObject:Object;
  
  [Bindable]
  private var listContents:ArrayCollection;
  
  private namespace yweather = "http://xml.weather.yahoo.com/ns/rss/1.0";
  use namespace yweather;
  
  public function requestWeather():void {
  weatherService.cancel();
  var params:Object = new Object();
  params.p = zip.text;
  weatherService.send(params);
  }
  
  public function resultHandler(event:ResultEvent):void {
  myResult = XML(event.result);
  weatherObject = new Object();
  weatherObject.zip = zip.text;
  weatherObject.city = myResult.channel.yweather::location.@city;
  weatherObject.temp = myResult.channel.item.yweather::condition.@temp;
  weatherObject.imgsource = parseImageUrl(myResult.channel.item.description);
  
  var a:Array = new Array(weatherObject);
  listContents = new ArrayCollection(a);
  }
  
  private function parseImageUrl(fromHtml:XMLList):String {
  var pattern:RegExp = /img src="(.+?)" /;
  var results:Array = pattern.exec(fromHtml);
  var imageURL:String = results[1]; // backreference 1 from pattern
  return imageURL;
  }
  ]]>
  </mx:Script>
  
  <mx:HTTPService
  id="weatherService"
  url="http://weather.yahooapis.com/forecastrss"
  resultFormat="e4x"
  result="resultHandler(event)" />
  
  <mx:Text text="1. Basic Form + HTTPService Retrieval" />
  
  <mx:Form width="400">
  <mx:FormItem label="Zip Code">
  <mx:TextInput id="zip" />
  <mx:Button label="Get Weather"
  click="requestWeather()" />
  </mx:FormItem>
  </mx:Form>
  
  <mx:Text text="Raw RSS Feed" />
  
  <mx:TextArea id="resultFld"
  text="{myResult}"
  width="400" height="152" />
  
  <mx:Text text="1. List w/ Image Item Renderer (Drop-In)" />
  
  <mx:List dataProvider="{listContents}"
  labelField="imgsource"
  width="400" height="100"
  itemRenderer="mx.controls.Image" />
  
  <mx:Text text="2. List w/ HBoxWeatherDisplay itemRenderer" />
  
  <mx:List dataProvider="{listContents}"
  labelField="zip"
  width="400" height="100"
  itemRenderer="components.HBoxWeatherDisplay" />
  
 </mx:Application>
 {code}
  
 h2. HBoxWeatherDisplay ItemRenderer
  
 {code}
 <?xml version="1.0" encoding="utf-8"?>
 <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="100"
  xmlns:me="components.*" >
  <mx:Script>
  <![CDATA[
  private var _data:Object;
  
  override public function set data(value:Object):void {
  _data = value;
  if (data != null) {
  zip.text = _data.zip;
  city.text = _data.city;
  temp.text = _data.temp + 'F';
  img.source = _data.imgsource;
  }
  }
  
  override public function get data():Object {
  return _data;
  }
  
  ]]>
  </mx:Script>
  
  <mx:Image id="img" />
  <mx:VBox height="100%">
  <mx:Text id="zip" />
  <mx:Text id="city" />
  <mx:Text id="temp" />
  </mx:VBox>
 </mx:HBox>
 {code}
  
 h2. Rendered Application
  
  {test-flash:600|700|TileListExample3.swf}TileListExample3{test-flash}
  {test-flash:700|600|TileListExample3.swf}TileListExample3{test-flash}
  
  
 {adbe-prev:http://learn.adobe.com/wiki/display/Flex/DataGrid}
 {adbe-next:http://learn.adobe.com/wiki/display/Flex/Lists}
Powered by Atlassian Confluence 2.7.1, the Enterprise Wiki. Bug/feature request - Atlassian news - Contact administrators