UPDATE:
Исходя из ваших комментариев, это должно быть еще проще. Вы бы просто перебрали каждую из строк в dataProvider вашего List и сделали бы все необходимые изменения. В конце функции просто вызовите функцию refresh
для ArrayCollection. Используя мой пример ниже:
public function myFunction(evt:Event):void
{
for each (var o:MyObject in myDataProvider)
{
o.someProperty = "Updated";
}
myArrayCollection.refresh();
}
После обновления ArrayCollection вызов функции refresh
должен привести к тому, что List также обновит средства визуализации элементов.
ОРИГИНАЛЬНЫЙ ОТВЕТ:
Звучит так, как будто вы хотите вызвать функцию за пределами ItemRenderer
, когда в ItemRenderer
нажата кнопка или что-то еще, но все еще можно получить доступ к данным для элемента, который был нажат.
Если я правильно понял, вам все равно не нужно было бы обращаться к самому ItemRenderer
. Вы можете просто сделать что-то вроде этого (просто пример):
<fx:Script>
<![CDATA[
public function myFunction(evt:Event):void
{
trace(MyObject(myList.selectedItem).someProperty.toString());
}
]]>
</fx:Script>
<mx:List id="myList" dataProvider="{myDataProvider}" >
<mx:itemRenderer>
<fx:Component>
<mx:CheckBox selectedField="IsSelected" change="outerDocument.myFunction(event);" />
</fx:Component>
</mx:itemRenderer>
</mx:List>
Если вам do необходимо передать совершенно отдельный параметр, который не хранится в dataProvider вашего List, просто передайте его в качестве аргумента changeHandler для изменения.
change="outerDocument.myFunction(event, someOtherValue);"