В связанном решении fetchDrawableOnThread()
следует вызывать только в том случае, если представление еще не имеет правильной отрисовки.
Вид не может отображаться, если getDrawable()
возвращает ноль.
Если вы повторно используете слоты, вам нужно идти дальше и управлять состоянием. Если в ваших представлениях есть переменная-член, хранящая URL-адрес, и логическое значение, указывающее, загружен ли он, легко узнать, например, вызывать fetchDrawableOnThread()
или нет.
Я бы предположил, что toString()
отрисовки подробно описывает путь, с которого загружалось изображение. (Если этого не произойдет, вы можете создать подкласс возвращаемого объекта drawable). В этом случае вы можете избежать логического значения, описанного выше, и просто выполнить сравнение, чтобы определить, подходит ли оно для рисования или нужно ли заменить.
Кроме того, ваш getView () в видимой строке должен гарантировать, что те, которые больше не видны, выгружаются, чтобы предотвратить исчерпание памяти. Хитростью было бы переместить невидимые изображения в мягкие ссылки (чтобы они выгружались при необходимости памяти), как отметил другой постер в исходной теме.