Hier ist die Problemumgehung, die ich verwendet habe.
DataGroup
tropft Sparks kompositorische Güte, in dem es eine rendererUpdateDelegate
Eigenschaft exponiert, die Sie mit Ihrer eigenen Klasse einstellen können, um jede benutzerdefinierte Funktion zu liefern, nach der Sie suchen.
Während es frustrierend ist, dass die Schnittstelle fallengelassen wurde, ohne wirklich angekündigt zu werden, ist dieser Ansatz viel mächtiger.
Hier ist eine Beispielklasse. In meinem Beispiel mag ich den letzten Renderer es collapsable
Eigenschaft auf false
gesetzt haben:
/**
* Decorates another IItemRendererOwner (eg., a DataGroup) and augments the updateRenderer method
* to set the isCollapsable property */
public class ThreadMessageRendererUpdateDelegate implements IItemRendererOwner
{
private var _dataGroup:DataGroup;
public function get dataGroup():DataGroup
{
return _dataGroup;
}
public function set dataGroup(value:DataGroup):void
{
_dataGroup = value;
if (dataGroup)
{
dataGroup.rendererUpdateDelegate = this;
}
}
public var dataProvider:ArrayCollection;
public function ThreadMessageRendererUpdateDelegate(owner:DataGroup=null)
{
this.dataGroup = owner;
}
public function itemToLabel(item:Object):String
{
return dataGroup.itemToLabel(item);
}
public function updateRenderer(renderer:IVisualElement, itemIndex:int, data:Object):void
{
dataGroup.updateRenderer(renderer,itemIndex,data);
if (renderer is ThreadMessageRenderer)
{
ThreadMessageRenderer(renderer).collapsable = itemIndex < dataProvider.length - 1;
}
}
}
Und hier ist es zB Nutzung:
<fx:Declarations>
<viewer:ThreadMessageRendererUpdateDelegate dataProvider="{dataProvider}" dataGroup="{threadList}" />
</fx:Declarations>
<fx:Script>
<![CDATA[
[Bindable]
public var dataProvider:ArrayCollection
]]>
</fx:Script>
<s:DataGroup height="100%"
width="100%"
dataProvider="{dataProvider}"
itemRenderer="ThreadMessageRenderer"
id="threadList"
>
</s:DataGroup>
Ich glaube nicht, 'rendererAdd' ausgelöst, wenn ein Renderer war recycelt, obwohl ich falsch liegen könnte. –
Sie könnten Recht haben, nicht in der Lage, im Moment zu überprüfen, also am besten, das als Vorbehalt zu behandeln –