Я реализовал простой GridView с бесконечной прокруткой на Android. У меня есть следующие компоненты:
- GridView с onScrollListener, всякий раз, когда GridView прокручивается до самого низа, я запускаю AsyncTask, чтобы загрузить больше элементов в свой адаптер.
- адаптер, который добавляет элементы, полученные из AsyncTask, и запускает notifyDataChanged(), чтобы GridView мог обновить себя.
Кажется, это работает нормально, за исключением того, что в этом случае адаптер растет бесконечно... Я имею в виду, что я продолжаю добавлять элементы к этому адаптеру всякий раз, когда пользователь прокручивает до конца, это похоже на проблему с памятью.
Каков правильный способ реализации бесконечного адаптера? Я ищу концепции, а не стороннюю банку, которая делает это за меня.
Спасибо
решение
Отмеченный ответ имеет правильную теорию. Моя реализация резервирует загруженные данные в базу данных sqllite, поэтому общий поток таков: загрузка данных из Интернета в потоке, анализ и сохранение данных в базе данных в потоке, запуск notifyDataChanged в потоке пользовательского интерфейса.
Метод адаптера getCount() просто выполняет выбор счетчика (идентификатора) из базы данных и одновременно извлекает пакет объектов из базы данных в память для использования адаптером.