从SQLite数据库动态填充GalleryView的图片

3
我有一个SQLite数据库,其中包含2000多个低分辨率缩略图。数据库本身的大小超过100MB。项目要求我将照片存储在数据库中,而不是文件路径中。
这是我的第一次处理图像,以下是我所需要的帮助:在应用程序UI中,我有一个水平GalleryView,我想动态地从数据库中获取图片来填充它。如果这些图像被延迟加载到画廊视图中,我不介意。我在某处读到,我必须使用ImageAdapter将图像动态绑定到UI元素,我需要了解如何做到这一点。我从未使用过BaseAdapter类。
谢谢, AB
2个回答

1

您需要创建一个Adapter的子类,从数据库中提取图像并将其转换为位图或可绘制对象,然后将您的图片设置到ImageView中,并将该视图添加到您的Gallery中。

我建议您在进行操作之前先放弃使用Gallery,因为Gallery存在一个错误,它不允许适配器正确地回收视图。这意味着当用户滚动画廊时,每当新的图像进入屏幕时,都会创建一个新的ImageView对象。这样做非常浪费,将导致在滚动您的画廊时性能明显下降,因为垃圾回收会不断地运行。

要开始使用适配器,请查看SimpleCursorAdapter,并在网上搜索如何扩展SimpleCursorAdapter的示例。在您的getView方法中,您将从数据库中获取图像并将其设置到要显示给用户的视图中。


谢谢你的快速更新,Tim。然而,如果我想在UI中保留GalleryView,并且只有在从数据库加载所有图片后才允许用户访问它,我该怎么做呢?不幸的是,我无法摆脱水平Gallery类型视图来显示我的图片。 - Abhishek Sharma
换句话说,您认为将2000多张图片加载到画廊中会花费大量时间吗? - Abhishek Sharma
它不会一次性加载所有 2000 多个内容。它只会加载需要填充屏幕的内容。然后当用户滚动到足够远的地方时,它将加载新的内容。因此它不会预加载全部内容,而只是屏幕上显示的内容。 - FoamyGuy

0

我能够使用自定义适配器和一个字符串数组来完成这个操作,该数组保存了SD卡上图像的位置。但在进行所有这些操作之前,我必须从数据库中提取图像并将它们复制到SD卡位置。我正在努力避免这一步骤,因为仅复制这些图像就需要5-7秒钟。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接