创建一个Item Editor, 它可以处理含有复杂数据类型的Data

主程序: itemEditDemo

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.events.ListEvent;
import mx.collections.ArrayCollection;
[Bindable]
private var arr:ArrayCollection =new ArrayCollection([{age:12, name:"Joe"},
{age:16, name:"Jorge"},
{age:19, name:"Jojo"},
{age:2, name:"James"},
{age:12, name:"Joaquin"}]);
public function processData(event:ListEvent):void{
//终止Event 中的默认动作
event.preventDefault();
//获得新的单元格编译器
list.editedItemRenderer.data=MultipleDataTypeEditor(list.itemEditorInstance).data;
//关闭单元格编译器
list.destroyItemEditor();
//通知列表控件来更新其显示。
list.dataProvider.notifyItemUpdate(list.editedItemRenderer);
}
]]>
</mx:Script>
<mx:List id="list" itemEditor="MultipleDataTypeEditor" dataProvider="{arr}"
itemEditEnd="processData(event)"
itemRenderer="MultipleDataTypeEditor"
width="350" editable="true" >
</mx:List>

</mx:Application>

渲染的编辑器:MultipleDataTypeEditor

package
{
import mx.containers.Canvas;
import mx.controls.TextInput;

public class MultipleDataTypeEditor extends Canvas
{
private var nameField:TextInput;
private var ageField:TextInput;
public function MultipleDataTypeEditor()
{
super();
nameField = new TextInput();
ageField = new TextInput();
addChild(nameField);
//focusEnabled 该值指示组件是否可以在用户单击它后获得焦点。
nameField.focusEnabled=false;
addChild(ageField);
nameField.focusEnabled=false;
ageField.x=100;
this.horizontalScrollPolicy="none";
}
override public function set data(value:Object):void{
super.data =value;
nameField.text=value.name;
ageField.text=value.age;
}
override public function get data():Object{
return {name:nameField.text,age:ageField.text} ;
}

}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值