2013-04-09 90 views
0

我似乎无法解决这个问题。我想显示一个列表,以arraycollection中的特定位置开始,而不更改数组。我们的目标是拥有一组用户可以滑过的全屏图像(就像在电子书中一样),而对于我希望从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> 

回答

1

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

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

0

如果您的目标是首先显示特定图像,为什么不为List设置selectedIndex。我的意思是在数据提供者中给数据对象一些id,并将索引传递给列表。 希望这个帮助,让我知道如果这不是什么意图

+0

如果我没有记错的话,你的方法还是会给予特定图像全自动的索引为0,因此,如果一个按钮将别人的书的最后一页,人的其他页面会后那。 – user1482027 2013-04-09 13:34:53

+0

我开始认为yoyr方法是正确的,但我似乎无法使其工作。你能指点我一些示例代码吗?这将不胜感激。 – user1482027 2013-04-11 12:38:50

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项)。

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

+0

感谢您的洞察,但我的问题是,我似乎无法设置索引。我已经用selectedIndex试过了,但是当我运行这个应用程序时,它似乎忽略了它。你能否指出我正确的方向(可能还有一些示例代码)? – user1482027 2013-04-11 12:52:29

+0

selectedIndex将起作用,但它不以您认为应该的方式进行绑定。如果索引位于实际视口内,它将仅处理选择。为此,您需要使用ensureIndexIsVisible(index:int):void – 2013-04-11 15:57:39