Arthur Neves
Arthur Neves

Reputation: 12128

spark List with ItemRenderer click function not working

I am having an issue with my ItemRenderer, which I am using for a spark List. My code is the following:

I have this list:

<s:List 
    id="productSetList" 
    dataProvider="{ model.productSets }" 
    change="model.selectSet( productSetList )" 
    height="100%" width="100%"
    borderVisible="false" 
    itemRenderer="SideBarItemRenderer" top="20" left="15">
</s:List>

and my itemRenderer is:

<s:ItemRenderer 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/halo" 
    width="160" height="175" autoDrawBackground="false" buttonMode="true" useHandCursor="true"
    click="click(event)" cacheAsBitmap="true"
    >


    <fx:Script>
        <![CDATA[
            import com.png.vm.model.vos.ProductSet;

            protected function click(event:MouseEvent):void
            {
                trace('arthur');
            }

        ]]>
    </fx:Script>

    <s:BitmapImage source="{ProductSet(data).image}" width="160" height="175"/>

</s:ItemRenderer>

The thing is, if I scroll the list, and click on an item, it does not trace 'arthur' ! Why is this so ? I must trace that all the time that someone clicks in the list!

EDIT: If I remove change="model.selectSet( productSetList )" in the list, it works!! but I cannot remove that, some suggestions ? How can I switch that to another function?

Upvotes: 0

Views: 1886

Answers (2)

Arthur Neves
Arthur Neves

Reputation: 12128

My apologies, I have finally solved it. The problem was that inside the function,model.selectSet, I was calling List.change; I was messing the list up! My function was as follows:

    public function selectSet(list:List):void {
        list.layout.verticalScrollPosition=100;
        // another stuffs

    }

So, I just removed the line : list.layout.verticalScrollPosition=100; and now it`s working fine.

Thanks for all the help!

Upvotes: 0

Ian T
Ian T

Reputation: 761

Trace only works when you are debugging/using the debugging version of Flash Player. Make sure you are using that. If you want a pop-up message use Alert.show("message")

For more information about trace() check out: http://livedocs.adobe.com/flex/3/html/help.html?content=logging_08.html

And Alert.show(): http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00001965.html


If you are running debug player. Try originating the click event from an embedded <s:Group> this way whatever you add in here beyond the bitmap will still trigger the click event.

Something like:

<s:Group width="100%" height="100%" click="click(event)" >
    <s:BitmapImage source="{ProductSet(data).image}" width="160" height="175"/>
</s:Group>

I've definitely had click events work for me inside of ItemRenderers before

Upvotes: 1

Related Questions