Domanda

Ho alcune immagini che vorrei visualizzare in TileList in Flex. Le dimensioni di My TileList sono 2 colonne per n righe. Quello che voglio fare è visualizzare il primo elemento (riga 1, colonna 1) vuoto e non cliccabile, e iniziare a visualizzare i miei articoli dalla riga 1, colonna 2. È possibile?

Mi chiedo anche quando creo un evento click per lo stesso TileList, c'è un modo per ottenere un indice dell'elemento cliccato?

Grazie mille!
m.

È stato utile?

Soluzione

Buona domanda. Sono sicuro che qualcuno offrirà una soluzione più elegante, ma un approccio semplice potrebbe essere semplicemente quello di aggiungere un valore null al tuo data Provider nella posizione 0 e avere il tuo itemRenderer gestire il valore null visualizzando una sorta di contenuto alternativo, o nulla in tutti.

Per estrarre l'indice dell'elemento cliccato, ci sono diverse proprietà sugli oggetti ListEvent che potresti usare - event.currentTarget.selectedIndex (o event.currentTarget.selectedIndices, se stai usando la selezione multipla), evento. columnIndex e .rowIndex, o event.itemRenderer, che è possibile utilizzare in combinazione con la proprietà itemRendererToIndex del TileList, tra gli altri.

Ecco un codice app rapido e sporco che dimostra entrambi questi approcci:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">

    <mx:Script>
        <![CDATA[

            import mx.controls.Alert;
            import mx.events.ListEvent;
            import mx.collections.ArrayCollection;

            private var dpSource:Array = [
                null, 
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}, 
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"},
                {src: "http://turbonerd.com/media/images/roaming/t/20091017225355.jpg"}
            ];      

            [Bindable]
            private var dp:ArrayCollection = new ArrayCollection(dpSource);

            private function myList_itemClick(event:ListEvent):void
            {
                Alert.show("You clicked the item at position (" + event.columnIndex + ", " + event.rowIndex + "), which is item " + myList.itemRendererToIndex(event.itemRenderer).toString() + " in the list.");
            } 

        ]]>
    </mx:Script>

    <mx:TileList id="myList" dataProvider="{dp}" itemClick="myList_itemClick(event)">
        <mx:itemRenderer>
            <mx:Component>
                <mx:Canvas>

                    <mx:Script>
                        <![CDATA[

                            override public function set data(value:Object):void
                            {
                                super.data = value;
                            }

                        ]]>
                    </mx:Script>

                    <mx:Image source="{data.src}" width="100" height="60" visible="{data != null}" />
                    <mx:Label text="No item!" visible="{data == null}" />

                </mx:Canvas>
            </mx:Component>
        </mx:itemRenderer>
    </mx:TileList>

</mx:Application>

Spero che sia d'aiuto! Pubblica di nuovo con domande se ne hai.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top