Галерея ImageAdapter convertView всегда имеет значение null

Я использую галерею с ImageAdapter, чтобы загрузить ее с помощью ImageViews, которые извлекают изображения из моих ресурсов. Моя проблема в том, что convertView, который передается методу getView () в моем адаптере, всегда имеет значение null. Это означает, что новый ImageView создается каждый раз при вызове getView ().Это приводит к ужасной производительности, потому что GC постоянно работает, чтобы стереть все эти созданные и больше не используемые ImageView.

Очевидно, это известная ошибка: Кэш просмотра галереи сломан; никогда не конвертирует взгляды. .

Мои два предпочтительных решения: 1. обрабатывать кеш представлений в самом адаптере и заботиться обо всей логике, необходимой для их повторного использования должным образом. или 2. включать мою собственную копию Виджет галереи и попробуйте исправить его, чтобы он правильно возвращал переработанные виды.

Я начал реализовывать первый вариант, но быстро понял, что не знаю точно, как реализовать всю логику этой операции. Я начинаю думать, что второй вариант может быть проще.

Я нашел здесь код виджета "Галерея": http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android /widget/Gallery.java

Я не совсем понимаю это, но я вижу, что он вызывает

child = mAdapter.getView(position, null, this);

в строке 745. Я (снятый в темноте) предполагаю, что это корень проблемы.

Есть ли у кого-нибудь опыт работы с этой ошибкой. Или может кто-нибудь указать мне в правильном направлении, чтобы выяснить, как работает ситуация с переработчиком, чтобы я мог настроить этот виджет для правильной работы? Или даже предложить какой-нибудь альтернативный вариант, который я могу упустить.

РЕДАКТИРОВАТЬ: Лучшим решением, которое я когда-либо находил, была реализация под названием EcoGallery. Единственное место, где я могу найти ссылку на него в Интернете, - это здесь . Чтобы он заработал, вы должны поместить каждый фрагмент оттуда в нужное место в вашем проекте.

14
задан FoamyGuy 2 June 2012 в 18:54
поделиться