DimArt Опубликовано 26 октября, 2014 Поделиться Опубликовано 26 октября, 2014 У меня есть код, но он работает только под Windows, когда компилирую его под андроид, то картинки не загружаются. В чём может быть причина? const count_items = 10; var Form1: TForm1; arr_urls:array[0..9]of String = ( 'http://pp.vk.me/c7004/c540105/v540105856/1ac7e/aA-hl0wGb9I.jpg' 'http://cs390.vk.me/u16075638/a_5671aff5.jpg' 'http://pp.vk.me/c624326/v624326216/16d8/ueJoy8De-oQ.jpg' 'http://www.picbutler.de/bild/126494/einruesselfischkn44p.jpg' 'http://pp.vk.me/c606724/v606724409/b8b8/bHKE730yRIU.jpg' 'http://pp.vk.me/c424629/v424629207/8e14/uUte11lG5N8.jpg' 'http://pp.vk.me/c7004/c540100/v540100602/ff0b/fhSBSeacn3s.jpg' 'http://pp.vk.me/c620027/v620027321/1ab3d/h-DQxnB2tQQ.jpg' 'http://pp.vk.me/c624622/v624622975/5c4b/EQ9cyj8INCg.jpg' 'http://pp.vk.me/c606724/v606724409/b8bf/LpkFlJZxwzs.jpg' ); implementation {$R *.fmx} //************************************************* procedure TForm1.FormCreate(Sender: TObject); var I:Integer; LItem: TListViewItem; begin for I := 1 to count_items do begin LItem := ListView1.Items.Add; LItem.Text := Format('Text bla-bla-bla %d', [I]); LItem.Detail := Format('Detail bla-bla-bla %d', [I]); end; TThread.CreateAnonymousThread(procedure() var i:integer; img:TBitmap; begin for I := 1 to count_items do begin img:=TBitmap.Create; img:=(GetImgFromUrl(arr_urls[i-1])); TThread.Synchronize(TThread.CurrentThread, procedure() begin ListView1.Items[i-1].BitmapRef:=TBitmap.Create; ListView1.Items[i-1].BitmapRef.Assign(img); img.Free; end ); end; end).Start; end; //************************************************* function TForm1.GetImgFromUrl(url:string):TBitmap; var memStream: TMemoryStream; img:TBitmap; begin memStream:=TMemoryStream.Create; img:= TBitmap.Create; result:=img; try IdHTTP1.Get(url,memStream); memStream.Position:=0; img.LoadFromStream(memStream); finally memStream.Free; end; result:=img; end; Ссылка на комментарий
0 ruslan Опубликовано 27 октября, 2014 Поделиться Опубликовано 27 октября, 2014 ListView1.Items[i-1].BitmapRef:=TBitmap.Create; ListView1.Items[i-1].BitmapRef.Assign(img); Не так. Просто bitmap.assign(img). Проверьте размер стрима после гет-запроса. Гляньте может у вас создан view под андроид, и там стиль итема без битмапа Ссылка на комментарий
1 ruslan Опубликовано 27 октября, 2014 Поделиться Опубликовано 27 октября, 2014 И вообще перепишите код. Так не советую. Делайте в потоке в цикле гет запросы и после каждого в синхронайз создавайте и настраивайте итем. Меньше вероятность тормозов и AV. DimArt 1 Ссылка на комментарий
0 DimArt Опубликовано 27 октября, 2014 Автор Поделиться Опубликовано 27 октября, 2014 Спасибо за помощь! Сделал отдельный поток для Get -запроса и всё заработало. Ссылка на комментарий
Вопрос
DimArt
У меня есть код, но он работает только под Windows, когда компилирую его под андроид, то картинки не загружаются.
В чём может быть причина?
Ссылка на комментарий
3 ответа на этот вопрос
Рекомендуемые сообщения