什么是正确的点(从生命周期视图)为Flex 3上的LIST容器设置数据提供程序

时间:2010-02-10 08:20:13

标签: flex actionscript-3 list itemrenderer lifecycle

我正在使用我自己的项呈示器创建一个LIST容器来显示xml文件。

现在,我正在覆盖项目渲染器中的public override function set data(value:Object):void方法,问题是这个函数被多次调用(!!)(多于数据提供者长度)。

也许我没有正确设置数据提供者,我的工作方式如下:

首先声明可绑定属性:

[Bindable]
private var _listDataProvider:XMLListCollection;

然后,创建LIST对象:

<mx:List id="list" dataProvider="{_listDataProvider}" itemRenderer="myItemRenderer" />

然后,加载xml(使用urlLoader)并在结果中执行:

_listDataProvider = new XMLListCollection(xml..Person);

XMLListCollection构建正常(我可以在调试中看到它)。

我做错了什么?????

谢谢你们......

1 个答案:

答案 0 :(得分:1)

对我而言,我有一种感觉,Flex 3 List和相关的dataProvider组件会在第一轮为每个项目渲染器设置几次数据(框架中的效率低下)。第一次,他们可能会将其设置为null(发生了什么?),然后下次他们可能将其设置为值。

要解决这个问题,请执行以下操作:

public function set data(value:Object):void
{
    if (super.data == value) 
        return;
    super.data = value;
}

这应该可以解决问题。