对于我正在构建的Android应用程序(Android 4.0.3),我正在尝试获取位于本地存储上的文件夹中的图像文件名列表。这是准确的工作,但是,我的图像以错误的顺序列出 - 它们按字符串排序,我需要它们作为数字排序(因为我的文件名包含数字,而不是字符/单词。它们的名字如下: 0.jpg,1.jpg,2.jpg等 - 一直到11.jpg,12.jpg等。但是,使用下面的函数返回的列表的排序为0.jpg,1.jpg ,11.jpg,12.jpg,2.jpg,3.jpg等。这不好,我需要将列表作为逻辑数字排序,而不是字符串。
有谁知道如何做到这一点?
非常感谢!
public BitmapProvider2()
{
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String selection = Images.Media.DATA+" LIKE ?";
String[] selectionArgs = {mCurrentDir+"%"};
final String orderBy = MediaStore.Images.Media.TITLE;
mImageCur = managedQuery(uri, null, selection, selectionArgs,orderBy );
if (mImageCur == null)
return;
// int column_index = mImageCur.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
mImageCur.moveToFirst();
mImagesCount = mImageCur.getCount();
}
答案 0 :(得分:0)
之所以这样返回是因为你的文件名是一个字符串而不是数字。所以11.jpg将会出现在2.jpg之前。
为了解决这个问题,您可以在使用Compareable比较器将其取出后对其进行排序,然后使用Collections.sort(); ,和/或你可以修剪'.jpg'并解析为int,然后排序。