2010-04-12 12 views
2

J'ai:Comment obtenir les éléments visibles sur une liste Spark avec mise en page virtuelle

  • ArrayCollection des Nombres;
  • a Liste utilisant ArrayCollection comme fournisseur de données et virtualLayout = true;
  • un ItemRenderer personnalisé qui montre une étiquette avec: a) le nombre b) une position y en fonction du nombre et le plus grand nombre visible

En d'autres mots, si j'ai 10 numéros dans l'AC , et seulement 5 apparaissent sur l'écran, la position y de ces 5 dépendra de la valeur du nombre maximum pour ceux 5. Lorsque l'utilisateur défile, bien sûr, ces 5 éléments changent donc la position de l'étiquette dans les moteurs de rendu changera .

Mes questions:

1) Comment puis-je obtenir la liste des éléments qui sont "actuellement" visible? 2) Quel événement/méthode à remplacer m'aidera à savoir que la liste a été défilée/que les éléments visibles ont changé?

Merci,

João Saleiro

Répondre

0

((list.dataGroup.layout) as VerticalLayout).rowCount pourrait être juste ce que vous cherchez.

6

getItemIndicesInView():Vector.<int> Renvoie les indices des rendus d'éléments visibles dans ce groupe de données.

+0

Commentaire supprimé. – swidnikk

1

J'ai résolu mon problème de cette façon:

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>