• 0
NitroTek

Ассинхронная загрузка изображений в ListBox

Вопросы

Делаю загрузку фоток в listBox в отдельном потоке. Загружается отлично, но при скроллинге проблемы, TImage начинают перемешиваться. Т.е картинки не соответствуют элементам списка, а происходит какой-то рандом.

 

TBitmap(ListItem.StylesData['avatar.bitmap'].AsObject).LoadFromURL(UserEntry.PhotoLink); 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 ответов на этот вопрос

  • 0

Я думаю, что просто ListItem - это не тот ListItem, который должен быть :)

Без кода, показывающего, откуда он взялся сложно что-то сказать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Да, и забыл сказать: работа с визуальными элементами в отдельном потоке - это плохо, очень плохо...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

у меня с загрузкой картинок в ListView проблемы были. пока не решил. проявлялась так - при загрузке более то ли 50 то ли 70 картинок, надписи на итемах становились полностью черными, такое ощущение что из за нехватки памяти. поэтому от этого пока отказался. есть конечно в планах сделать что бы картинка грузилась в итем при его показе и уничтожалась при его скрытии с экрана, но пока еще не придумал как это можно красиво реализовать. ибо как это делается в стандартном варианте, через пересчет всех высот всех итемов и вычисления из этого виден или нет твой итем, мне не понравилось. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Да, и забыл сказать: работа с визуальными элементами в отдельном потоке - это плохо, очень плохо...

 

После загрузки естественно поток синхронизируется с главным.

 

ListItem это обычный TListBoxItem;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

можно попробовать использовать  listBox.Begin update а  в конце где синхронизация потока listBox.End update.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу