我在Titanium中有一个ScrollableView
(仅针对Android),必须滚动几十个视图。每个视图都是一段或两段文字,可能是一两个图像。
我担心在CPU上施加压力会从一开始就填充所有视图。所以,我的计划是一次只在ScrollableView中有3个视图。
这是我提出的解决方案。视图编号为1到10.粗体编号视图是当前活动的视图。破折号是占位符。当用户查看第一个视图时:
1 2 3 - - - - - - -
用户向右滚动。
1 2 3 - - - - - - -
用户再次向右滚动,并删除了视图1。现在,View 4已添加到ScrollableView中。
- 2 3 4 - - - - - -
等等。
我面临的障碍是,据我所知,没有办法在现有视图之前插入视图(就像滚动左一样)。
我该如何实现?
答案 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包装器。它还管理内容的加载,以便只有在当前滚动位置可见的内容才需要在内存中。