繁体   English   中英

Alphabatize已安装应用的列表

[英]Alphabatize list of installed apps

嗨,我按照下面的教程,成功列出了我的应用程序中所有已安装的应用程序。

列出所有已安装的应用程序

然而,它没有按字母顺序列出它们,我无法弄清楚如何对它们进行排序。 任何有关这方面的帮助将不胜感激。 我尝试过这样的一些事情

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);

但无法弄清楚如何将其应用于应用列表标题。 感谢您对此的任何帮助

===编辑===

感谢您回复我做了以下操作,但排序错误。 错误读取“类型集合中的方法排序(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一个实例)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM