0

我正在用我自己的项目渲染器制作一个 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 构建正常(我可以在调试中看到它)。

我究竟做错了什么?????

多谢你们...

4

1 回答 1

1

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

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

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

这应该够了吧。

于 2010-02-10T09:52:14.883 回答