Titanium 钛合金使用tableviewrow显示数百行
使用我可以在Titanium 钛合金使用tableviewrow显示数百行,titanium,appcelerator,titanium-mobile,appcelerator-mobile,Titanium,Appcelerator,Titanium Mobile,Appcelerator Mobile,使用我可以在表格视图中显示大约数百个表格视图行。问题是该窗口将在3秒内打开(android设备)。我想为了在不到1秒的时间内显示表格,我必须进行一些优化 有什么建议吗? 提前谢谢 编辑 代码行 module.exports.draw = function(){ els = []; var cocktails = Ti.App.cocktails; for(var i=0;i<cocktails.length;i++){
表格视图
中显示大约数百个表格视图行
。问题是该窗口将在3秒内打开(android设备)。我想为了在不到1秒的时间内显示表格,我必须进行一些优化
有什么建议吗?
提前谢谢
编辑
代码行
module.exports.draw = function(){
els = [];
var cocktails = Ti.App.cocktails;
for(var i=0;i<cocktails.length;i++){
els.push({
type: 'Ti.UI.View',
searchableText : cocktails[i].nome,
properties : {
cocktail_id:cocktails[i].id,
borderColor:"#eee",
borderWidth: 1,
height: 100,
nome:cocktails[i].nome
},
childTemplates : [
{
type: 'Ti.UI.Label',
bindId : cocktails[i].id,
properties : {
text: cocktails[i].nome,
cocktail_id:cocktails[i].id,
color:"#000",
left:30,
zIndex:10,
top:10,
font:{
fontSize:20,
fontWeight:'bold'
}
},
events : {
click : function(e) {
Ti.App.fireEvent("render",{pag:'prepare',id:e.bindId});
}
}
},
{
type : 'Ti.UI.Label',
properties : {
left:30,
color:"#999",
top:50,
cocktail_id:cocktails[i].id,
text:cocktails[i].ingTxt != undefined?cocktails[i].ingTxt:''
},
bindId:cocktails[i].id,
events : {
click : function (e){
Ti.App.fireEvent("render",{pag:'prepare',id:e.bindId});
}
}
}
]
});
}
var search = Ti.UI.createSearchBar({
height:50,
width:'100%'
});
search.addEventListener('cancel', function(){
search.blur();
});
var content = Ti.UI.createListView({sections:[Ti.UI.createListSection({items: els})],searchView:search});
search.addEventListener('change', function(e){
content.searchText = e.value;
});
return content;
};
module.exports.draw=function(){
els=[];
var鸡尾酒=Ti.App.鸡尾酒;
对于(var i=0;i您需要研究延迟加载
正如thiswayup
所示,延迟加载可能是一个非常好的主意
如果不想使用延迟加载,可以执行以下操作:
function getListWindow( items ) {
var firstLayout = true;
var win = Ti.UI.createWindow({
//Your properties here.
});
var list = Ti.UI.createTableView({
data : [],
//other properties here
});
win.add(list);
win.addEventListener('postlayout', function() {
if(firstLayout) {
firstLayout = false;
var rows = [];
//Assuming the items argument is an array.
items.forEach(function( item ) {
rows.push( Ti.UI.createTableViewRow({
//Properties here based on item
}));
});
list.data = rows;
}
});
return win;
}
这样做将立即打开窗口,并在显示窗口后加载行。在生成行时显示加载程序可能是个好主意