将图像文件名列表排序为数字而不是字符串(在Android上)

时间:2013-10-02 22:08:09

标签: android eclipse image mediastore

对于我正在构建的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();
            }

1 个答案:

答案 0 :(得分:0)

之所以这样返回是因为你的文件名是一个字符串而不是数字。所以11.jpg将会出现在2.jpg之前。

为了解决这个问题,您可以在使用Compareable比较器将其取出后对其进行排序,然后使用Collections.sort(); ,和/或你可以修剪'.jpg'并解析为int,然后排序。