Не уверен насчет flex 4, так как я в основном работаю в flex 3, но настройка должна быть близка.По сути, пусть рендер обрабатывает рендеринг.
Ваш список должен выглядеть примерно так.
Вы можете сделать 3 очень важных переопределения, которые будут контролировать то, как рендерер может реагировать на данные.1) установить данные для когда новые данные назначены2) createChildren позволит вам динамически создавать детей.Я считаю, что это функция, которую вы ищете в сочетании с установленными данными3) commitProperties - это то место, где вы присваиваете данные потомкам, которые жестко запрограммированы, как пример моего ярлыка, или динамически создаваемые потомки.То, что я сделал в прошлом, похоже.Я проверяю данные еще раз на текущем макете, если он неправильный, я перестраиваю его.Таким образом, в методе set data я проверяю, верна ли компоновка, я вызываю createChildren ().Я полагаю, вы могли бы протестировать структуру данных на старых данных перед вызовом super.data в наборах данных, но у меня не было хороших результатов, подобных этому.
myRenderer.mxml
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" >
<mx:Script>
<![CDATA[
override public function set data(val:Object):void{
super.data = val;
if( !val ){
return;
}
// test data here if current layout is wrong rebuild it by calling createchildren
}
override protected function createChildren():void{
super.createChildren()
if( this.data == null ){
return;
}
// create your data driven layout here
}
override protected function commitProperties():void{
super.commitProperties();
if ( data == null ){
return;
}
}
]]>
</mx:Script>
<mx:Label id="myLabel" text="{data.someLabelVar} />
</mx:VBox>