android - 按字母顺序排列的已安装应用程序列表

标签 android list sorting installation

您好,我按照以下教程成功地在我的应用程序中列出了我所有已安装的应用程序。

List all installed apps in style

但是它没有按字母顺序列出它们,我不知道如何对它们进行排序。对此的任何帮助将不胜感激。我试过一些这样的事情

class IgnoreCaseComparator implements Comparator<String> {
            public int compare(String strA, String strB) {
                return strA.compareToIgnoreCase(strB);
            }
        }
        IgnoreCaseComparator icc = new IgnoreCaseComparator();
        java.util.Collections.sort(SomeArrayList,icc);

但不知道如何将其应用于应用列表标题。感谢您对此的任何帮助

===EDIT===

感谢您的回复 我做了以下但在排序时出错。错误显示“类型 Collections 中的方法 sort(List, Comparator) 不适用于参数 (List, ApplicationInfo.DisplayNameComparator)”

   private List<App> loadInstalledApps(boolean includeSysApps) {
      List<App> apps = new ArrayList<App>();

      PackageManager packageManager = getPackageManager();

      List<PackageInfo> packs = packageManager.getInstalledPackages(0); 

      for(int i=0; i < packs.size(); i++) {
         PackageInfo p = packs.get(i);
         ApplicationInfo a = p.applicationInfo;
         if ((!includeSysApps) && ((a.flags & ApplicationInfo.FLAG_SYSTEM) == 1)) {
            continue;
         }
         App app = new App();
         app.setTitle(p.applicationInfo.loadLabel(packageManager).toString());
         app.setPackageName(p.packageName);
         app.setVersionName(p.versionName);
         app.setVersionCode(p.versionCode);
         CharSequence description = p.applicationInfo.loadDescription(packageManager);
         app.setDescription(description != null ? description.toString() : "");
         apps.add(app);
      }
      Collections.sort(apps, new ApplicationInfo.DisplayNameComparator(packageManager));
      return apps;
   }

最佳答案

当您查询 Android 以获取已安装应用程序的列表时,您将获得 List<ApplicationInfo> . Android 提供一个 ApplicationInfo.DisplayNameComparator对于那些:

Collections.sort(apps, new ApplicationInfo.DisplayNameComparator(pm)); 

(其中 pmPackageManager 的实例)。

关于android - 按字母顺序排列的已安装应用程序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8174360/

相关文章:

php - MySQL 按观看次数最多的方式对图像进行排序

android - 在 CustomKeyboardView 中显示 <Key> over 2 <Row>?

android - @Part in multipart 发送双引号中的字符串参数

java - Android - 当检查文本框长度是否大于或等于 1 并执行某些操作时,仅当字符长度为 3 或以上时才会执行

Java 8 Streams 查找元素并将其添加到新列表的开头

python - 按 Pandas 数据帧的多索引数据中的索引和值排序

java - 如何从 onClickListeners 调用成员函数

list - 检查两个列表是否包含相同的元素

python - 替换元组中的项目

PHP:使用 usort() 时,数组项如何传递给值比较函数?