Это на самом деле не новое решение, просто исправление ответа @Mahesh Velaga:
var image = [];
for (var i = 0; i < test.length; i++) {
image[i]= Titanium.UI.createImageView({
top:row,
image:avatar
});
win.add(image[i]);
(function(i) { // -- added (inti)
image[i].addEventListener('click', function (e) {
alert('image number'+i);
});
})(i); // -- added (inti)
}
Вам нужно замыкание вокруг eventListener, чтобы значение i
было локальным для его обратного вызова.