如何使用几十个视图处理ScrollableView?

时间:2012-07-25 01:45:28

标签: javascript android titanium

我在Titanium中有一个ScrollableView(仅针对Android),必须滚动几十个视图。每个视图都是一段或两段文字,可能是一两个图像。

我担心在CPU上施加压力会从一开始就填充所有视图。所以,我的计划是一次只在ScrollableView中有3个视图。

这是我提出的解决方案。视图编号为1到10.粗体编号视图是当前活动的视图。破折号是占位符。当用户查看第一个视图时:

  

1 2 3 - - - - - - -

用户向右滚动。

  

1 2 3 - - - - - - -

用户再次向右滚动,并删除了视图1。现在,View 4已添加到ScrollableView中。

  

- 2 3 4 - - - - - -

等等。

我面临的障碍是,据我所知,没有办法在现有视图之前插入视图(就像滚动一样)。

我该如何实现?

2 个答案:

答案 0 :(得分:2)

我基于a Titanium module创建了this GitHub gist,就是这样做。

用法如下:

var VirtualScroller = require('ui/common/VirtualScroller');

var virtualScroller = VirtualScroller({
    itemCount: 10,
    start: 0,
    getView: function(i) {
        return Titanium.UI.createLabel({
            width: Titanium.UI.FILL,
            height: Titanium.UI.FILL,
            text: "This is item " + (i + 1)
        });
    },
    isInfinite: false
});

window.add(virtualScroller.view);

该模块通过控制具有三个视图的ScrollableView(如原始要点)来工作。它支持有限(上例)和无限滚动。

我发布了详细信息on my blog,并且可以使用at BitBucket

答案 1 :(得分:-1)

我建议使用ListView。您可以对其进行配置,以便没有分隔线。它在内部处理滚动,因此您不需要ScrollView包装器。它还管理内容的加载,以便只有在当前滚动位置可见的内容才需要在内存中。