从arraycollection中检索特定索引

时间:2013-04-09 10:44:09

标签: arrays flex flexbuilder

我似乎无法解决这个问题。我想显示一个以arraycollection中的特定位置开头的列表,而不更改数组。目标是拥有一组用户可以轻扫的全屏图像(如在电子书中),对于章节索引,我想从arraycollection中的特定索引编号开始。

是否有一种简单的方法可以告诉Itemrenderer从arraycollection中的特定索引号开始。

我的代码从索引0开始:

<s:List id="pagedList"
        width="100%" height="100%"
        verticalScrollPolicy="off" horizontalScrollPolicy="on"
        pageScrollingEnabled="true">

    <s:layout>
        <s:TileLayout orientation="rows" requestedRowCount="1" 
                      columnWidth="{pagedList.width}" rowHeight="{pagedList.height}" 
                      verticalGap="0" horizontalGap="0"/>
    </s:layout>
    <s:ArrayCollection id="contentData">
        <s:Image source="assets/cover.jpg"/>
        <s:Image source="assets/introduction.jpg"/>
        <s:Image source="assets/H1/40_days.jpg"/>
    </s:ArrayCollection>
    <s:itemRenderer>
        <fx:Component>
            <s:ItemRenderer>
                <s:Group>
                    <s:Image source="{data.source}" horizontalAlign="center"/>
                </s:Group>
            </s:ItemRenderer>
        </fx:Component>
    </s:itemRenderer>  
</s:List>

4 个答案:

答案 0 :(得分:1)

AFAIK没有办法做到这一点。您必须对数据提供者进行排序,使其与您要显示项目的顺序相匹配。

如果您不想修改原始集合,可以创建ListCollectionView,将原始集合传递给构造函数,并向ListCollectionView添加排序。然后,您可以将集合视图指定为列表的数据提供者。

答案 1 :(得分:1)

这一切都始于您的数据。数据本身需要包含有关章节偏移的信息。通常,您将存储偏移搜索点的集合。

例如:

Pages:     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Chapters:  1     2       3   4        5

章节对象将包含对从哪个页面开始及其总长度的引用。一组搜索按钮将遍历章节集合,告诉您的列表从适当的偏移量开始(即第2章,从索引4开始,长度为4项)。

您的页面对象可以是单个图像,也可以是每页图像集合。在任何一种情况下,从数据的角度来看,您真正构建的是分层集合。

答案 2 :(得分:0)

如果您的目标是首先显示特定图像,为什么不为List本身设置selectedIndex。我的意思是在dataprovider中为你的数据对象提供一些id并将索引传递给列表。 希望这个帮助,如果这不是预期的话,请告诉我

答案 3 :(得分:0)

Spark List上的ensureIndexIsVisible方法可能有效吗?

注意:您可能需要点击以下html页面顶部的“产品”复选框才能真正看到此方法。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/components/List.html#ensureIndexIsVisible()