读书人

HorizontalList 动态添加数据请帮忙

发布时间: 2012-02-13 17:20:26 作者: rapoo

HorizontalList 动态添加数据,请帮忙!

XML code
<mx:HorizontalList  >            <mx:dataProvider>                <mx:Array>                    <mx:Object label="Backpack" icon="@Embed('images/backpack.jpg')"/>                    <mx:Object label="Compass" icon="@Embed('images/compass.jpg')"/>                </mx:Array>            </mx:dataProvider></mx:HorizontalList>


上面是静态的 我要动态的 添加数据源
XML code
<mx:HorizontalList dataProvider="{arrobj}"  >            <mx:dataProvider>                <mx:Array>                    <mx:Object label="Backpack" icon="@Embed('images/backpack.jpg')"/>                    <mx:Object label="Compass" icon="@Embed('images/compass.jpg')"/>                </mx:Array>            </mx:dataProvider></mx:HorizontalList><mx:Script>   [Bindable]    private var arrobj:Array = new Array();      public function addListObj():void{        var obj:Object=new Object();        obj.label="ffff";        arrobj.push(obj);   }</mx:Script>


为什么执行addListObj()函数,HorizontalList的数据源没改变呢?没显示出来 ,请帮忙

[解决办法]
private var arrobj:Array = new Array();

换成ArrayCollection类型
添加方法换成
private var arrobj:ArrayCollection= new ArrayCollection();
arrobj.addItem(obj);

因为Array是半绑定类型,里面数据更改是不会触发绑定的。只有array重新执行另一个对象才触发绑定
但ArrayCollection则不同。

[解决办法]
楼上正解

JScript code
[Bindable]private var listArr:ArrayCollection=new ArrayCollection();private function init():void{    var obj:Object=new Object();    obj.label="aaa";    listArr.addItem(obj);} 

读书人网 >flex

热点推荐