5.4.为TileList创建一个基本的条目渲染器

5.4.1问题
为TileList 类设置一个定制的itemRenderer,当数据从TileList 传递给渲染器时它将附一个特定的依赖于代码的图象
5.4.2 解决方法
当数是为渲染器设置时创建一个VBox 对象并且覆盖set data 方法来从杂乱数据中读取相匹配的图象来编码传递
5.4.3 讨论
一个List 的条目渲染器传递一个描述当前表中每一个条目的数据对象,它用来创建渲染器中详细的列和行,所有定制数据处理都需要在item renderer 中完成,它将在为数据属性设置方法时发生,所以item renderer 将会与父级列表同步

对于下面这个例子,一个图象列表以静态公共引用形式存放在单独的文件来存取并且被引用到这里的一个不规则列表来与positionType 的值作比较以使这个参数值传递到数据属性,
+展开
-XML
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400"
height="300">

<mx:Script>
<![CDATA[
[Bindable]
private var type:String;
[Bindable]
private var imageClass:Class;
private var typeToPositionHash:Object = {1:"Manager",2:"Accountant",3:"Designer", 4:"Developer"};
private var typeToImageHash:Object = {1:Assets.managerIcon, 2:Assets.accountantIcon,3:Assets.designerIcon, 4:Assets.developerIcon};
override public function set data(value:Object):void {
type = typeToPositionHash[value.positionType];
imageClass = typeToImageHash[value.positionType];
nameText.text = value.name;
}

]]>
</mx:Script>
<mx:Text text="{type}"/>
<mx:Image source="{imageClass}"/>
<mx:Text id="nameTextfontSize="16"/>
</mx:VBox>

这里使用itemRenderer 显示,简单地通个List 组件的一个有效类名的引用,注意如果dataProvider对象没有一个positionType 属性,itemRenderer就不会按照期望的效果运行,在大型应用程序中,所有这些数据类型都表现为强类型数据对象以确保不会引发任何问题。
+展开
-XML
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400"
height="300">

<mx:Script>
<![CDATA[
import oreilly.cookbook.SimpleRenderer;
import mx.collections.ArrayCollection;
[Bindable]
private var dp:ArrayCollection = new ArrayCollection([{name:"John Smith" , positionType:1}
, {name:"Ellen Smith" , positionType:2}
, {name:"James Smith" , positionType:3}
, {name:"Jane Smith" , positionType:4}]);

]]>
</mx:Script>
<mx:List itemRenderer="oreilly.cookbook.SimpleRendererdataProvider="{dp}"/>
</mx:Canvas>

加支付宝好友偷能量挖...


评论(0)网络
阅读(100)喜欢(0)flash/flex/fcs/AIR