У меня есть список, который использует itemRendererFunction для получения настраиваемых средств визуализации элементов. Есть ли способ переоценить только один элемент в списке и получить другое средство визуализации элементов?
представьте себе такой код:
есть два средства визуализации элементов ItemRendererOne.mxml и ItemRendererTwo.mxml
Data.as
package {
public class Data {
private var _data : Boolean = false;
[Bindable]
public function get data():Boolean {
return _data;
}
public function set data(value:Boolean) : void {
_data = value;
}
public function Data(value : Boolean) {
_data = value;
}
}
}
и главное приложение
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" >
<fx:Script>
<![CDATA[
import mx.collections.ArrayList;
private var dataProvider : ArrayList = new ArrayList([new Data(true), new Data(false)]);
public function getItemRenderer(data : Object) : IFactory {
if (data.data) {
return new ClassFactory(ItemRendererOne);
} else {
return new ClassFactory(ItemRendererTwo);
}
}
protected function button1_clickHandler(event : MouseEvent) : void {
var data : Data = dataProvider.getItemAt(0) as Data;
data.data = !data.data;
}
]]>
</fx:Script>
<s:VGroup>
<s:List dataProvider="{dataProvider}" itemRendererFunction="{getItemRenderer}" />
<s:Button click="button1_clickHandler(event)" />
</s:VGroup>
</s:WindowedApplication>
Обычно, когда кто-то нажимает на кнопку, я хочу, чтобы getItemRenderer вызывался снова, а элемент в списке обновлялся новым средством визуализации элементов.