Я использую галерею с 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. Единственное место, где я могу найти ссылку на него в Интернете, - это здесь . Чтобы он заработал, вы должны поместить каждый фрагмент оттуда в нужное место в вашем проекте.