我在使用itemRenderer功能时遇到问题。使用ArrayCollection时,使用itemRenderer的DataGrid中的可见数据将被渲染得很好。但是,如果我开始滚动条目,则使用渲染器在单元格中重复这些条目。根据id,单元格未填充日期。我在这里做错了什么。
我读了许多解释,如:
http://blogs.adobe.com/aharui/2007/03/thinking_about_item_renderers_1.html
这里是set数据函数的代码(itemRenderer正在扩展HBox):
override public function set data(value:Object):void {
_data = value;
if(data!=null)
{
var maxValue:Number = 0;
var maxFontHeight:int = 18;
for each(var term:ArrayCollection in _data.story)
{
if((term.getItemAt(1) as Number)>maxValue)
maxValue=term.getItemAt(1) as Number;
}
for each(var term:ArrayCollection in _data.story)
{
var FontHeight:int = Math.floor((term.getItemAt(1) as Number) * maxFontHeight / maxValue);
var l:Label = new Label();
l.text = term.getItemAt(0) as String;
l.setStyle("fontWeight","normal");
l.setStyle("fontFamily","Verdana");
l.setStyle("paddingRight",0);
l.setStyle("paddingLeft",0);
l.setStyle("fontSize", FontHeight);
l.setStyle("color", 0x000000);
this.addChild(l);
}
}
}
答案 0 :(得分:0)
在添加新内容之前,您没有清除渲染器中已有的内容。
尝试将标签的构造移动到createChildren,在set数据中设置文本(而不是构造另一个标签),并记住如果数据为空则清除文本。
例如,您可以进行一些优化,例如在执行工作之前检查新数据与当前数据不同。