簡體   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