Я проверил много вещей, чтобы решить мою проблему, но сейчас я понятия не имею, как это исправить.
В интернете я узнал, что «событие загрузки» imageView может работать, но это не так.
У меня есть следующий код:
var thisWin = Ti.UI.currentWindow;
// Sets the HTTP request method, and the URL to get data from
loader.open("GET","http://myserver/foo/")
// Send the HTTP request
loader.send();
// Runs the function when the data is ready for us to process
loader.onload = function()
{
var rest_result = JSON.parse(this.responseText);
var scrollView = Ti.UI.createScrollView({
contentWidth: 'auto',
contentHeight: 'auto',
top:0,
left:0,
showVerticalScrollIndicator: true,
scrollType: 'vertical',
backgroundColor:'#fff'
});
var label_headline_general = Ti.UI.createLabel({
color:'#0066cc',
text:'My Headline 1',
font:{fontSize:14,fontFamily:'Helvetica Neue'},
shadowColor: '#bfd9f2',
shadowOffset:{x:1, y:1},
textAlign:'left',
width:'auto',
height:'auto',
left:5,
top:6
});
var label_headline_main = Ti.UI.createLabel({
color:'#003366',
text:rest_result.name,
font:{fontSize:18,fontWeight:'bold',fontFamily:'Helvetica Neue'},
shadowColor: '#ddeeff',
shadowOffset:{x:1, y:1},
textAlign:'left',
width:'auto',
height:'auto',
left:5,
top:label_headline_general.size.height + 5
});
// imageURI is something like: http://foo/myimage.png
var imageURI = rest_result.image;
if(imageURI == '')
{
imageURI = 'my-fallback-image.png';
}
var my_image = Ti.UI.createImageView({
image:imageURI,
defaultImage:'my-fallback-image.png',
width:'auto',
height:'auto',
top:0,
left:0
});
my_image.addEventListener('load',imageIsLoaded);
function imageIsLoaded(e) {
my_image.image = imageURI;
my_image.show();
}
scrollView.add(label_headline_general);
scrollView.add(label_headline_main);
scrollView.add(label_image);
thisWin.add(scrollView);
}
В Titanium-эмуляторе код работает нормально и изображение, если у JSON было изображение, показывалось, а на устройстве - нет. На устройстве отображается изображение по умолчанию. Я думаю, что у меня проблема с синхронизацией (все элементы отображаются быстрее, чем изображение).
Я тестировал тот же подход с окном и без scrollView, и он работал. В этом случае изображение было загружено каждый раз правильно на каждом устройстве.
Как я могу убедиться, что удаленное изображение в imageView "my_image" загружено в scrollView и будет отображаться на 100%? Есть ли техника?
Спасибо!