从Onload方法Titanium中获取TableViewRow的索引

时间:2012-01-14 11:25:23

标签: javascript titanium titanium-mobile

我需要做的很简单,但我无法理解它。 我想得到被点击的行的ID,这样我就可以根据该ID导航到下一个窗口,Id和listitems通过JSON从外部源获取并存储在NumberOfLists数组中

 Titanium.UI.setBackgroundColor('#000');

// create base UI tab and root window
//
var win1 = Titanium.UI.createWindow({
    title : 'Main Window',
    backgroundColor : '#fff'
 });

var listUrl = "http://magadhena.com/test/list.php?FCODE=5&USERID=1";
var NumberOfLists = [];
var listsJson;
var tableData = [];
var table = Ti.UI.createTableView({
    top : 40,
    left : 10,
    width : 300
 });


 var xhr = Ti.Network.createHTTPClient();
 xhr.setTimeout(3000);
 xhr.onload = function() {
    listsJson = eval('(' + this.responseText + ')');
    for(var i = 0; i < listsJson.length; i++) {
            var userId = listsJson[i].userid;
            var listId = listsJson[i].listid;
            var listName = listsJson[i].listname;

            var Object1 = new list(userId, listId, listName);

            NumberOfLists.push(Object1);


            var row = Ti.UI.createTableViewRow({
            title : Object1.listName,
            hasDetail:true
    });

    tableData.push(row)

    }
    table.setData(tableData);


};
 xhr.open("GET", listUrl);
 xhr.send();

 win1.add(table);



 // Opening Window1

win1.open();

///// List Objects

   function list(userid, listid, listname) {
    this.userId = userid;
    this.listId = listid;
    this.listName = listname;

}

1 个答案:

答案 0 :(得分:0)

修改你的onload。通常,您可以像这样

向行对象声明自定义属性
var Object1 = new list(userId, listId, listName);

NumberOfLists.push(Object1);


var row = Ti.UI.createTableViewRow({
   title : Object1.listName,
   hasDetail:true,
   remoteObject: Object1 /* your custom property */
});

这个属性应该易于在tableview点击事件中阅读:

table.addEventListener('click',function(e){
   var _clickedRow = e.row;
   Ti.API.debug("userID:" +_clickedRow.remoteObject.userId);
});