This is similar to what @ www.Flextras.com said, so I will not repeat it. However, I will add an example and one or two things.
Your custom ItemRenderer might look like this:
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"> <fx:Script> <![CDATA[ import mx.events.ItemClickEvent; private function requestForm():void { var event:ItemClickEvent = new ItemClickEvent(ItemClickEvent.ITEM_CLICK); event.index = itemIndex; event.item = data; owner.dispatchEvent(event); } ]]> </fx:Script> <s:Label id="labelDisplay" verticalCenter="0" /> <s:Button right="0" label="open" verticalCenter="0" click="requestForm()" /> </s:ItemRenderer>
Two things that differ from Flexstras' answer:
- I use the built-in ItemClickEvent element instead of a custom event> less encoding
- I am sending an event to the
owner ItemRenderer, which is actually the list that this ItemRenderer contains. Because of this, you do not need to bubble an event.
Now, to open the form when the button is clicked, do something like this:
myList.addEventListener(ItemClickEvent.ITEM_CLICK, openForm); private function openForm(event:ItemClickEvent):void { trace("open " + event.item.toString()); }
source share