如何使用虚拟布局获取Spark List上的可见项目

我有:

  • 数组的ArrayCollection;
  • 使用上述ArrayCollection作为数据提供者的List,以及virtualLayout = true;
  • 一个自定义的ItemRenderer,它显示一个标签:a)数字b)一个y位置,取决于数字和最高数字可见
  • 换句话说,如果我在AC中有10个数字,并且只有5个数字出现在屏幕上,那么这5个数字的y位置将取决于这5个数字的最大数值。当用户滚动时,当然这5个元素更改,以便项目渲染器中标签的位置会发生变化。

    我的问题:

    1)如何获取“当前”可见的项目列表? 2)要覆盖哪个事件/方法将帮助我知道列表已滚动/可见项目更改?

    谢谢,

    JoãoSaleiro


    getItemIndicesInView():Vector.<int>返回此DataGroup中可见的项呈示器的索引。


    我用这种方式解决了我的问题:

    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>
    

    ((list.dataGroup.layout) as VerticalLayout).rowCount可能正是你正在寻找的。

    链接地址: http://www.djcxy.com/p/34639.html

    上一篇: How to get the visible items on a Spark List with virtual layout

    下一篇: Flash Builder not showing desktop Application