1

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

1 回答 1

0

这样返回的原因是因为您的文件名是字符串而不是数字。所以 11.jpg 会在 2.jpg 之前。

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

于 2013-10-02T22:21:03.963 回答