Вы добавляете button.addEventListener вне оператора for, и поскольку вы перезаписываете var кнопки при каждой итерации, eventListener присоединяется только к последней созданной кнопке.
Вероятно, это не лучший способ решить эту проблему, но для решения вашей проблемы переместите button.addEventListener внутри оператора for, а затем проверьте уникальный идентификатор в объекте, который отправляется событию. Пример:
for (x=0;x<5;x++) {
var button = Titanium.UI.createButton({
height:40,
width:100,
top:50*x,
id:x
});
var label = Titanium.UI.createLabel({
text:'LABEL '+x
});
button.add(label);
win1.add(button);
button.addEventListener('click', function(e){
Ti.API.info('Button clicked '+e.source.id);
});
}
Свойство button.id только что составлено, но теперь вы можете видеть, какая кнопка отправляет событие. Вы также можете использовать название или что-то еще, что является уникальным.
Другие опции, на которые стоит обратить внимание, - это создание уникальных имен переменных для каждой кнопки, но это, вероятно, больше работы. Кроме того, вместо того, чтобы помещать кнопку в строку таблицы, используйте метку или изображение, а затем прослушивайте событие, сгенерированное таблицей или строкой.