http://hi.baidu.com/luming19840827/blog/item/7e715bb7cfbbcbc236d3cace.html
?
rrayCollection 是增强性的 Array,依然是用数组来存储数据,但支持多种排序、属性绑定等,适合用来处理复杂数据。 网上和论坛好友们贴出来的解决办法都是采用ObjectProxy这个类做一个中间代理: arrayContactList.addItem(new ObjectProxy({employeeName:pojo.employeeName}) 今天我尝试了另外一个方法,呵呵,也成功解决这个问题了。 我的解决思路就是通过AS,使用BindingUtils这个类的bindProperty方法,对itemRenderer “主动设置” 绑定数据。 修改了原来自定义的itemRenderer为:
但是,其子元素是无法作为数据源绑定的。
myArrayCollection.push(new ObjectProxy({”label”:”Flex”,”icon”:”assets/fl.png”}))
这样其实就是从数据源头来堵住这个可能发生的错误,但是这个做法 有个缺点,他不能应用于标签数据<mx:ArrayCollection />这个格式的数据。<?xml version=”1.0″ encoding=”utf-8″?>
<mx:VBox xmlns:mx=”http://www.adobe.com/2006/mxml” creationComplete=”init();”>
<mx:Script>
<![CDATA[
import mx.binding.utils.BindingUtils;
private function init():void{
BindingUtils.bindProperty(pic,"source",data,"icon");
BindingUtils.bindProperty(bt,"label",data,"label");
}
]]>
</mx:Script>
<mx:Image id=”pic”/>
<mx:Button id=”bt”/>
</mx:VBox>
?
测试发布,哈哈,再也不出现警告错误信息了。
――――――――――――――――――――――――――
(修改于3月6日)
我现在很想说我是个白痴,我是个井底之蛙,我还以为我发现了一个重大的解决办法,其实我错了,我一开始就走弯路了。
按照我那个做法,绑定进行一次,以后再拖动tileList,出来的数据是不会更新的。
我太小家之气了。上面的也不删除了,让自己记住这个错误。
修改上面的自定义itemRenderer为下面这样,就什么都不用考虑了并且一切Ok了。
感谢L4cd
<?xml version=”1.0″ encoding=”utf-8″?> <mx:VBox xmlns:mx=”http://www.adobe.com/2006/mxml”> <mx:Script> <![CDATA[ import mx.binding.utils.BindingUtils; [Bindable] private var _data:Object; [Bindable] private var _label:String; [Bindable] private var _icon:String; override public function set data(value:Object):void{ _label=value.label; _icon=value.icon; _data=value; } override public function get data():Object{ return _data; } ]]> </mx:Script> <mx:Image source=”{_icon}”/> <mx:Button label=”{_label}”/> </mx:VBox>?
?