2 Stimmen

Wie man die sichtbaren Elemente in einer Spark-Liste mit virtuellem Layout erhält

Ich habe:

  • eine ArrayCollection von Zahlen;
  • eine Liste, die die obige ArrayCollection als Datenlieferant verwendet, und virtualLayout=true;
  • ein benutzerdefinierter ItemRenderer, der ein Etikett mit anzeigt: a) der Nummer b) einer y-Position in Abhängigkeit von der Zahl UND der höchsten sichtbaren Zahl

Mit anderen Worten: Wenn ich 10 Zahlen im AC habe und nur 5 auf dem Bildschirm erscheinen, hängt die y-Position dieser 5 vom Wert der Höchstzahl für diese 5 ab. Wenn der Benutzer scrollt, ändern sich natürlich diese 5 Elemente, so dass sich die Position der Beschriftung in den Element-Renderern ändert.

Meine Fragen:

1) Wie erhalte ich die Liste der Elemente, die "derzeit" sichtbar sind? 2) Welches Ereignis/welche Methode, die ich überschreiben kann, zeigt mir an, dass die Liste gescrollt wurde bzw. dass sich die sichtbaren Elemente geändert haben?

Ich danke Ihnen,

João Saleiro

6voto

Yozef Punkte 829

getItemIndicesInView():Vector.<int> Gibt die Indizes der in dieser DataGroup sichtbaren Element-Renderer zurück.

1voto

Manu Punkte 11

Ich habe mein Problem auf diese Weise gelöst:

protected function pagedList_touchInteractionEndHandler(event:TouchInteractionEvent):void
{
    var _index:int = (event.currentTarget.scroller.viewport.layout.horizontalScrollPosition / event.currentTarget.scroller.viewport.layout.columnWidth);                
}

<s:List id="pagedList" scrollSnappingMode="center" selectionColor="#FFFFFF" downColor="#FFFFFF" focusAlpha="0" 
            width="100%" height="100%" useVirtualLayout="true"
            verticalScrollPolicy="off" horizontalScrollPolicy="on"
            pageScrollingEnabled="true" 
            itemRenderer="myItemRender" 
            skinClass="skins.PagedListSkin" 
            touchInteractionStart="pagedList_touchInteractionStartHandler(event)" touchInteractionEnd="pagedList_touchInteractionEndHandler(event)" >
        <s:layout>
            <s:TileLayout orientation="rows" requestedRowCount="1" 
                columnWidth="{pagedList.width}" rowHeight="{pagedList.height}" 
                verticalGap="0" horizontalGap="0" />
        </s:layout>
</s:List>

0voto

Dragos Punkte 1

((list.dataGroup.layout) as VerticalLayout).rowCount könnte genau das sein, wonach Sie suchen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X