2011-11-17 44 views
8

嗨,我遵循以下教程,并成功地列出了我的应用程序中的所有安装的应用程序。Alphabatize安装的应用程序列表

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

但无法弄清楚如何将它应用到应用列表标题。感谢您对本

===编辑===

任何帮助,感谢您对我做了如下的答复,但对排序错误。错误读取“在类型集合的方法排序(名单,比较器)是不适用的参数(列表,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; 
    } 

回答

13

当您查询的Android让安装的应用程序的列表,你将获得List<ApplicationInfo>。机器人提供那些的ApplicationInfo.DisplayNameComparator

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

(其中pmPackageManager一个实例)。

+1

我编辑了我的上面,但有错误。在我的班级里我没有任何关于List 的列表他们差不多吗? – GFlam

+0

这解决了我在使用AsyncTask App加载器时遇到的两个问题。谢谢。 –

+0

@GFlam如果您想对PackageInfo进行排序而不是ApplicationInfo,请在此处查看我的答案:https://stackoverflow.com/a/47198817/997940 –

相关问题