Как гласит название, я использую BaseAdapter для отображения элементов в ListView. Очевидно, ListView будет повторно использовать представления, включая TextViews и NetworkImageViews.Android Volley - Отмените запрос NetworkImageView в базовом адаптере
Предполагая 3 пунктов могут быть отображены сразу, NetworkImageView будет повторно использоваться для пунктов по индексу: 1, 4, 7, ....
В зависимости от того, что отображается, то NetworkImageView будет либо:
- запрос изображения из сети и отобразить его,
- дисплей кешированная Bitmap,
- или отобразить локальный Drawable ресурс.
Элементы 2 и 3 работают нормально, однако в Сценарии 1, скажем, мы показываем элемент по индексу 4 из сети, а пользователь прокручивает элемент 7 до загрузки 4 и является локальным ресурсом, мы отображение локального ресурса. Однако наш сетевой запрос на изображение может просто закончиться сейчас, поэтому в результате мы получим неправильное изображение.
Как я могу обеспечить соблюдение правильного (ожидаемого) поведения?
@ Ответ Pork правильный, но это очень полезная информация, если вы не используете 'NetworkImageView'. Также хорошая информация об использовании 'AbsListView.RecyclerListener', если кто-то нуждается в дальнейшем контроле над представлениями. +1 – pjco
Спасибо за ваш ответ, у меня есть только сомнения, как вы можете отменить запросы, сделанные с помощью метода get из ImageLoader? вы не можете добавить тег к этим запросам, что вам нужно, чтобы отменить запрос. – vantesllar
Nevermind, я видел, что класс ImageContainer имеет свой собственный метод, чтобы отменить запрос, изображение которого предназначено для хранения. – vantesllar