效果说明:利用flex的itemRenderer渲染器,自定义List的每条内容,这里加上不同图标。
(由于有用到子组件和图标,这里放出源代码下载)
来看源代码:
主程序
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="veiw.*">
- <mx:Style>
- Application{
- fontSize:12px;
- }
- </mx:Style>
- <mx:Script>
- <![CDATA[
- import mx.events.ListEvent;
- import veiw.ListItem;
- import mx.collections.ArrayCollection;
- [Bindable]
- private var db:ArrayCollection = new ArrayCollection([{id:1,name:'jquery教程'},
- {id:2,name:'ext教程'},
- {id:3,name:'flex教程'},
- {id:4,name:'php教程'}]);
- ]]>
- </mx:Script>
- <mx:List id="listTest" itemRenderer="veiw.ListItem" dataProvider="{db}" width="200"/>
- </mx:Application>
沿用之前发布的List文章的例子。
关键是增加了itemRenderer这个属性。
关键来看渲染器子组件的代码:
- <?xml version="1.0" encoding="utf-8"?>
- <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="200" height="50" verticalAlign="middle">
- <mx:Script>
- <![CDATA[
- [Bindable]
- private var imageClass:Class;
- [Embed(source="assets/jquery.png")]
- private var jqueryIcon:Class;
- [Embed(source="assets/ext.jpg")]
- private var extIcon:Class;
- [Embed(source="assets/flex.jpg")]
- private var flexIcon:Class;
- [Embed(source="assets/php.jpg")]
- private var phpIcon:Class;
- private var typeToImageHash:Object = {1:jqueryIcon, 2:extIcon,
- 3:flexIcon, 4:phpIcon};
- override public function set data(value:Object):void{
- imageClass = typeToImageHash[value.id];
- nameText.text = value.name;
- }
- ]]>
- </mx:Script>
- <mx:Image source="{imageClass}" />
- <mx:Text id="nameText" />
- </mx:HBox>
这里有必要提下Embed这个元标签,这个元标签的作用是将图片、视屏等嵌入到flash。
根据嵌入位置的不同,语法也各不同:
1、[ Embed (parameter1, paramater2, ...)] 元数据标签
这主要在AS文件中,或MXML文件中的
2、@ Embed (parameter1, paramater2, …) 指令
这主要在MXML标签中使用。
3、 Embed (parameter1, paramater2, …) 指令
这主要在
例子所用的是第一种方式,嵌入图标并赋值给一个变量。
- override public function set data(value:Object):void{
- imageClass = typeToImageHash[value.id];
- nameText.text = value.name;
- }
这里覆盖读写数据的方法。

