我想知道 Ti.UI.TableViewRow 的“className”属性在创建自定义行时有什么帮助。
例如,我通过以下方式使用自定义行填充 tableview:
function populateTableView(tableView, data) {
var rows = [];
var row;
var title, image;
var i;
for (i = 0; i < data.length; i++) {
title = Ti.UI.createLabel({
text : data[i].title,
width : 100,
height: 30,
top: 5,
left: 25
});
image = Ti.UI.createImage({
image : 'some_image.png',
width: 30,
height: 30,
top: 5,
left: 5
});
/* and, like, 5+ more views or whatever */
row = Ti.UI.createTableViewRow();
row.add(titleLabel);
row.add(image);
rows.push(row);
}
tableView.setData(rows);
}
当然,这个“自定义”行的示例很容易使用 TableViewRow 的标准title
和image
属性创建,但这不是重点。如何防止分配新标签、图像视图和表格视图的其他子视图以支持它们的重用?我知道在 iOS 中,这是通过使用-[UITableView dequeueReusableCellWithIdentifier:]
从“reservoir”(因此“className”在这里是“标识符”)获取行对象的方法来实现的,该对象当前未用于显示数据,但已经具有所需的子视图在其中正确布局,因此只需要更新其中包含的数据(文本、图像数据等)。
由于这个系统非常简单,我很难相信 Titanium API 使用的方法不支持这个。
在阅读 API 并搜索网络后,我确实怀疑是这种情况。推荐使用“className”属性作为在 Titanium 中提高表格视图效率的简单方法,但未以任何方式解释其与自定义表格视图行的关系。如果有人能为我澄清这件事,我将不胜感激。