2

我有一个ScrollableView必须滚动浏览几十个视图的 Titanium(仅针对 Android)。每个视图都是关于一两个文本的段落,可能有一个或两个图像。

我担心从一开始就填充所有视图会对 CPU 造成太大压力。所以,我的计划是一次在 ScrollableView 中实际上只有 3 个视图。

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

1 2 3 - - - - - - -

用户向右滚动。

1 2 3 - - - - - - -

用户再次向右滚动,视图 1 被移除。视图 4 现在已按预期添加到 ScrollableView。

- 2 3 4 - - - - - -

等等。

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

我应该如何实现这个?

4

2 回答 2

2

我根据这个 GitHub gist创建了一个 Titanium 模块,它就是这样做的。

用法是这样的:

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 来工作(如原始要点)。它支持有限(上例)和无限滚动。

我已经在我的博客上发布了详细信息,它可以在 BitBucket上找到。

于 2012-07-27T16:39:09.493 回答
-1

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

于 2012-07-25T01:51:41.577 回答