有一个自定义的tableview,如何给一个给定的行一个隐藏的id #variable?

时间:2011-07-24 19:54:36

标签: titanium appcelerator appcelerator-mobile

我有一个自定义构建的tableview,我在这里逐行构建表格中的文本。我有一个大循环,它遍历一组XML数据,并根据RSS XML提要构建行。

然后我添加了一个事件监听器,以查看somone何时点击其中一行:

tableview.addEventListener('click',function(e)
{
    showrow(theid);
});

我的问题是,在构建行的过程中,如何将 theid 定义为与该行关联的变量?

我尝试了一个简单的

    var theid = item.getElementsByTagName("id").item(0).text;

在我的循环中,但这确实有效,因为它始终设置为我的XML条目循环中的最后一项。

谢谢!

2 个答案:

答案 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);