такая же проблема, но сделано все проще- у ListView выставлено свойство Images, Items создаются программно, у них выставляется ImageIndex.
Как бы стандартный путь, но... В винде работает, а на смартфоне нет картинок (((
UPD:
Моё решение проблемы неотображаемых картинок в ListBoxItem на смартфоне (Android)
1. Картинки находятся в ImageList1, размер 40х40
2. ListView обычный стандартный без переделок,
3. Delphi 10.2 Tokyo
procedure TMyForm.ListView1UpdateObjects(const Sender: TObject;
const AItem: TListViewItem);
var I:TListItemImage;
B:TBitmap;
begin
I:=AItem.Objects.FindDrawable('I') as TListItemImage; // такое имя у стандартного ListViewItem без всяких кастомизаций
if I<>nil then begin
B:=ImageList1.Bitmap(tsizef.Create(40,40),I.ImageIndex); // вытаскиваем картинку по индексу, который задан ранее при заполнении ListView
I.OwnsBitmap:=true; // указываем ListViewItem, чтобы он уничтожал экземпляр картинки при своем уничтожении
I.Bitmap:=TBitmap.Create; //создаем картинку, которая будет автоматом уничтожена
I.Bitmap.Assign(B); // и копируем в нее контент
end;
end;
Если не пользовать Assign, а напрямую присваивать I.Bitmap=ImageList1.Bitmap(.... , то при уничтожении ListViewItem возникает invalid Pointer, поскольку в TListItemImage.Destroy картинка уничтожается без всяких проверок - есть ли жизнь на марсе, нет ли жизни на марсе ли она вообще.