如何处理具有数十个视图的ScrollableView

How to handle a ScrollableView with dozens of views?

本文关键字:十个 ScrollableView 视图 何处理 处理      更新时间:2024-02-15

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

我担心从一开始就填充所有视图会给CPU带来太大的压力。因此,我的计划是在ScrollableView中一次只能有3个视图。

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

12 3----

用户向右滚动。

123----

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

-234---

等等。

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

我应该如何实现这一点?

我基于这个GitHub要点创建了一个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上找到。

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