我正在使用这种技术来获取 Android 中的照片桶或画廊列表
但是,这会遍历每张图像,并且对于 1000 多张图像来说速度很慢。
有没有办法使用 SQL(可能是 DISTINCT 关键字?)更快地获取 BUCKET_DISPLAY_NAME 列表?
我正在使用这种技术来获取 Android 中的照片桶或画廊列表
但是,这会遍历每张图像,并且对于 1000 多张图像来说速度很慢。
有没有办法使用 SQL(可能是 DISTINCT 关键字?)更快地获取 BUCKET_DISPLAY_NAME 列表?
以下解决方案对我有用。我发现在预测中做一个不同的不是媒体内容提供商的选择。此外,这似乎适用于 cursorLoader。
// TODO Auto-generated method stub
String[] projection = { Images.Media._ID, Images.Media.BUCKET_DISPLAY_NAME };
HashMap<String, String> imagesGroups = new HashMap<String, String>();
String ids = null;
Cursor c = _myContext.getContentResolver().query(Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, null);
if (c.getCount() > 0)
{
c.moveToFirst();
do
{
String bucketDisplayName = c.getString(c.getColumnIndex(Images.Media.BUCKET_DISPLAY_NAME));
String _id = c.getString(c.getColumnIndex(Images.Media._ID));
//here is where we ensure we get a unique image id for each distinct bucket display name
if(!imagesGroups.containsKey(bucketDisplayName))
{
imagesGroups.put(bucketDisplayName, _id);
if(ids == null)
ids = _id;
else
ids += "," + _id;
}
}
while (c.moveToNext());
}
c.close();
String selection = Images.Media._ID + " IN (" + ids + ")";
CursorLoader cursorLoader = new CursorLoader(this, Images.Media.EXTERNAL_CONTENT_URI, projection, selection, null, null);
return cursorLoader;
当使用更多图像时,我们必须使用延迟加载概念。如果你想看看http://androidsnips.blogspot.in/2010/08/lazy-loading-of-images-in-list-view-in.html或http://thinkandroid.wordpress。 com/2012/06/13/lazy-loading-images-from-urls-to-listviews/ 当使用这个概念时,第一次加载的图像被存储在内存中,如果再次获得相同的图像,它将无需再次加载即可直接查看和显示。希望这是你需要的