Here is an example using getRepeaterItem() and getItemIndex()
Tracy

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; 
    layout="absolute" 
    creationComplete="initApp()">
<mx:Script><![CDATA[
  import mx.collections.ArrayCollection;
  import mx.controls.Alert;
  
  [Bindable]private var _acDP:ArrayCollection;
        
        public function initApp():void
        {
          var oItem:Object;
          _acDP = new ArrayCollection();
          oItem = {Album:"The Lost Chord", Artist:"The Moody Blues", 
Price:"15.99", x:30, y:30 };
          _acDP.addItem(oItem);
          oItem = {Album:"Meddle", Artist:"Pink Floyd", Price:"17.99", x:170, 
y:60 };
          _acDP.addItem(oItem);
          oItem = {Album:"Trespass", Artist:"Genesis", Price:"18.99", x:220, 
y:100 };
          _acDP.addItem(oItem); 
          oItem = {Album:"In the Wake of Poseidon", Artist:"King Crimson", 
Price:"18.99", x:170, y:140 };
          _acDP.addItem(oItem);
          oItem = {Album:"Journey to the Center of the Earth", Artist:"rick 
Wakeman", Price:"18.99", x:30, y:110 };
          _acDP.addItem(oItem);           
 
        }//initApp
        
        private function onClickItem(oEvent:Event):void
        {
          var oItem:Object = oEvent.currentTarget.getRepeaterItem();
          var iIndex:int = _acDP.getItemIndex(oItem);
          lblIndex.text = String(iIndex);
        }//onClickItem

        
]]></mx:Script>
  <mx:Label text="Clicked Item Index:" x="0" y="0" 
      fontSize="14"  fontWeight="bold" />
  <mx:Label id="lblIndex" x="160" y="0" 
      fontSize="14" fontWeight="bold" color="red" />
  <mx:Repeater id="rp" dataProvider="{_acDP}" >
    <mx:LinkButton label="{rp.currentItem.Album}" click="onClickItem(event)"
        x="{rp.currentItem.x}" y="{rp.currentItem.y}"
         />
  </mx:Repeater>
</mx:Application>

________________________________________
From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of 
droponrcll
Sent: Thursday, October 04, 2007 11:58 AM
To: [email protected]
Subject: [flexcoders] Re: Getting Index of item clicked in repeater

--- In [email protected], "Tracy Spratt" <[EMAIL PROTECTED]> wrote:
>
> I have not done this recently that I can recall, but here are some
> suggestions.
> 
> * If your data Provider is a collection, you can use
> getRepeaterItem() with collection.getItemIndex()
> * Look at the repeaterIndex and instanceIndex properties of
> UIComponent. Remember the click handler event object provides the
> target and currentTarget properties to reference the repeated UIObject
> * Use a custom component to repeat and set an index property on it
> using repeater.currentIndex

I've already tried suggestion 3, and the index does not seem to bear 
any relation to what was clicked. For instance, I can click 3 
different things and get back 2, and several other things and get back 
4, but never do I get anything other than 2 or 4. I have not even been 
able to get the click event to fire on the repeater itself, so it seems 
that option 3 is most promising. However, the index valued that is 
stored isn't correct.

using

<mx:Repeater id="allBlocks" dataProvider="{contentSource.children()}">
<ac:ContentBlock contentItem="{allBlocks.currentItem}" 
rIndex="{allBlocks.currentIndex}" />
</mx:Repeater>

Thanks;

Amy
 

Reply via email to