динамическое заполнение галереи изображениями из базы данных sqlite - PullRequest
3 голосов
/ 12 октября 2011

У меня есть база данных sqlite, в которой более 2000 уменьшенных изображений фотографий. Размер базы данных превышает 100 МБ. Проект требует от меня, чтобы фотографии, хранящиеся в базе данных, а не Путь файла.

Это то, что я хотел бы сделать, и мне нужна помощь, как это я впервые имею дело с изображениями. У меня есть горизонтальный GalleryView в моем интерфейсе приложения, который я хочу заполнить изображениями, извлеченными из этого База данных динамически. Я не против, если эти изображения лениво загружены на в галерее вид в фоновом режиме. Я где-то читал, что я буду необходимо использовать ImageAdapter, чтобы связать изображения с элементом пользовательского интерфейса динамически. Мне нужно понять, как это делается. я никогда использовал класс BaseAdapter.

Спасибо, AB

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Вы действительно будете создавать подклассы для Адаптера, чтобы вытащить изображения из вашей БД, превратить их в растровые изображения или Drawables, затем установить изображение в ImageView и добавить его в свою Галерею.

Я бы посоветовал вам отказаться от использования Галереи прямо сейчас, прежде чем приступить к работе. В галерее есть ошибка, из-за которой ваш адаптер не может корректно перерабатывать представления. Это означает, что когда пользователь прокручивает галерею каждый раз, когда новое изображение выходит на экран, создается новый объект ImageView. Это расточительно и приведет к заметному снижению производительности во время прокрутки вашей галереи из-за постоянно работающей сборки мусора.

Чтобы начать работу с адаптером, проверьте SimpleCursorAdapter и найдите в Интернете примеры того, как расширить SimpleCursorAdapter. Внутри метода getView вы извлечете свое изображение из БД и установите его в виде, которое будет показано пользователю.

0 голосов
/ 18 октября 2011

Мне удалось сделать это с помощью специального адаптера и массива строк, который содержит расположение изображений на SD-карте.Прежде чем сделать все это, я должен вытащить изображения из базы данных и скопировать их в папку SDCard.Я работаю над тем, чтобы избежать этого шага, так как он добавляет 5-7 секунд, чтобы просто скопировать эти изображения.

...