我正在使用我自己的项呈示器创建一个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构建正常(我可以在调试中看到它)。
我做错了什么?????
谢谢你们......
答案 0 :(得分:1)
对我而言,我有一种感觉,Flex 3 List和相关的dataProvider组件会在第一轮为每个项目渲染器设置几次数据(框架中的效率低下)。第一次,他们可能会将其设置为null(发生了什么?),然后下次他们可能将其设置为值。
要解决这个问题,请执行以下操作:
public function set data(value:Object):void
{
if (super.data == value)
return;
super.data = value;
}
这应该可以解决问题。