2014-03-25 48 views
1

我希望能夠在每行(createTableViewRow)中放入不同的按鈕。我創建了五個按鈕(Titanium.UI.createButton),但我不知道如何爲每個創建的行放置所有五個按鈕。 有人可以告訴我如何做到這一點?如何在鈦工作室的每一行上放置一個按鈕?

function sendAjax() { 

    var xhr = Titanium.Network.createHTTPClient(); 

    xhr.onerror = function(e){ 
     var error = e.error; 
     alert(error);    
    }; 
    xhr.open('GET', 'http://xxxxxxxxxxxxxx'); 
    xhr.send(); 

    var tv = Titanium.UI.createTableView({ 
     height: Titanium.UI.SIZE, 
     width: Titanium.UI.FILL 
    }); 
    win2.add(tv); 

    xhr.onload = function() { 

     var data = []; 
     var schools = JSON.parse(this.responseText); 

     for (s in schools) { 
      data.push(Titanium.UI.createTableViewRow({ 
      title: schools[s].Name 
     })); 
    } 
    tv.data = data; 
    }; 
} 

回答

0

試試這個,

var win = Ti.UI.createWindow({ 
backgroundColor : '#fff' 
}); 

var tableData = []; 

for(var i = 0; i < 10; i++) { 
var row = Ti.UI.createTableViewRow(); 
var button = Ti.UI.createButton({ 
    title : 'Button ' + i, 
    width : 100, 
    height : 40, 
    buttonid : i //our custom button property 
}); 
row.add(button); 
tableData.push(row); 

button.addEventListener('click', function(e) { 
    Ti.API.info('button ' + e.source.buttonid + ' clicked.'); 
    alert('Button ' + e.source.buttonid); 
}); 
} 

var tableView = Ti.UI.createTableView({ 
data : tableData 
}); 

win.add(tableView); 

win.open(); 

這個答案找到here

UPDATE:

function sendAjax() { 

var xhr = Titanium.Network.createHTTPClient(); 

xhr.onerror = function(e){ 
    var error = e.error; 
    alert(error);    
}; 
xhr.open('GET', 'http://xxxxxxxxxxxxxx'); 
xhr.send(); 

var tv = Titanium.UI.createTableView({ 
    height: Titanium.UI.SIZE, 
    width: Titanium.UI.FILL 
}); 
win2.add(tv); 

xhr.onload = function() { 

    var data = []; 
    var schools = JSON.parse(this.responseText); 
    for (s in schools) { 
    var row = Ti.UI.createTableViewRow(); 
    var rowItem = Ti.UI.createView({ 
     height : 40, 
     width : Ti.UI.FILL, 
     layout : 'horizontal' 
    }); 
    row.add(rowItem); 
    var title = Ti.UI.createLabel({ 
     height : 40, 
     text : schools[s].Name, 
     width : Ti.UI.SIZE 
    }); 

    rowItem.add(title); 
    var button = Ti.UI.createButton({ 
     title : 'click ', 
     width : 100, 
     height : 40, 
     buttonid : s //our custom button property 
    }); 
    rowItem.add(button); 
    data.push(row); 

    button.addEventListener('click', function(e) { 
     Ti.API.info('button ' + JSON.stringify(e.source.buttonid) + ' clicked.'); 

    }); 
    }; 

    tv.data = data; 
}; 
}; 

不要忘記,以紀念這是正確的答案。如果這個有用。

+0

嗨,漂亮的代碼,但在你的代碼,您使用的地方JSON得到什麼?我可以簽署不同的adventListener到按鈕? –

+0

IO tyried你的代碼,但它給了我錯誤:data is UNDEFINED ... –

+0

你能告訴哪一行顯示錯誤嗎?請確保你已經在for循環之外聲明瞭var data = []。 –

1

您應該添加上的tableView監聽事件,而不是行內的每個按鈕:

tableView.addEventListener("click", function (event) { 
    if (event.source.buttonid) { 
     //it's a button 
    } 
}); 
+0

嗨,很好的代碼,它解決了我的問題與每個按鈕differents聽衆。 –