Android ListView пытается повторно использовать видимую ячейку после вызова setImageBitmap с асинхронным загруженным растровым изображением

У меня очень странное поведение, когда адаптер ListView предоставляет в метод getView такие же convertViews, даже если все они видны: getView(); 0; holder: ViewHolder@4289bde8 getView(); 1; holder: ViewHolder@4289bde8 getView(); 4; holder: ViewHolder@4289bde8 getView(); 2; holder: ViewHolder@4289bde8 getView(); 3; holder: ViewHolder@4289bde8

Это происходит только если я вызываю setImageBitmap с асинхронным загруженным изображением. Если этот метод вызывается со статическим растровым изображением (например, растровое изображение из ресурсов) - все работает как задумано: getView(); 2; holder: ViewHolder@426fd408 getView(); 1; holder: ViewHolder@42899128 getView(); 0; holder: ViewHolder@4289bdf0 getView(); 4; holder: ViewHolder@4289b598 getView(); 5; holder: ViewHolder@4289b480

1 ответ

Это стало большим сюрпризом для меня, но проблема была связана с моей опечаткой, когда я случайно указал android:layout_height="wrap_content" для ListView. Сразу после того, как я изменил его на правильный android:layout_height="match_parent" значение, механизм утилизации начал работать правильно даже для асинхронных растровых изображений!

Другие вопросы по тегам