我有一个自定义构建的tableview,我在这里逐行构建表格中的文本。我有一个大循环,它遍历一组XML数据,并根据RSS XML提要构建行。
然后我添加了一个事件监听器,以查看somone何时点击其中一行:
tableview.addEventListener('click',function(e)
{
showrow(theid);
});
我的问题是,在构建行的过程中,如何将 theid 定义为与该行关联的变量?
我尝试了一个简单的
var theid = item.getElementsByTagName("id").item(0).text;
在我的循环中,但这确实有效,因为它始终设置为我的XML条目循环中的最后一项。
谢谢!
答案 0 :(得分:4)
当你在循环中创建TableViewRows时,只需用点符号添加'theid'属性
var row = Ti.UI.createTableViewRow();
row.theid = item.getElementsByTagName("id").item(0).text;
row.addEventListener('click', function(e){
alert( e.source.theid );
});
注意:如果要在TableViewRow上添加其他对象(如图像,标签等),请确保查看KitchenSink中的事件传播,以确保'e.source'是tableViewRow而不是UI对象添加到tableViewRow
如果要将eventListener添加到表(而不是行),只需检查点击的'rowData':
table.addEventListener('click', function(e){
alert( e.rowData.theid );
});
答案 1 :(得分:0)
您应该将自定义变量添加到您的行中,例如
var newRow = Ti.UI.createTableViewRow({
title: 'my new row',
customID: item.getElementsByTagName('id').item(0).text
});
tableViewRow.add(newRow);
如果不起作用,请尝试:
var newRow = Ti.UI.createTableViewRow({
title: 'my new row',
'customID': item.getElementsByTagName('id').item(0).text
});
tableViewRow.add(newRow);