Алфавитный список установленных приложений - PullRequest
8 голосов
/ 18 ноября 2011

Здравствуйте, я следовал приведенному ниже руководству и успешно перечислил все мои установленные приложения в моем приложении.

Список всех установленных приложений в стиле

Однако он не перечисляет их в алфавитном порядке, и я не могу понять, как их отсортировать, чтобы они были. Любая помощь с этим будет принята с благодарностью. Я пробовал несколько вещей, как это

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

Но не могу понять, как применить его к заголовкам списка приложений. Спасибо за любую помощь с этим

=== РЕДАКТИРОВАТЬ ===

Спасибо за ответ. Я сделал следующее, но при сортировке произошла ошибка. Ошибка гласит: «Метод sort (List, Comparator) в типе Collections не применим для аргументов (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;
   }

1 Ответ

13 голосов
/ 18 ноября 2011

Когда вы запрашиваете Android, чтобы получить список установленных приложений, вы получаете List<ApplicationInfo>. Android поставляет ApplicationInfo.DisplayNameComparator для тех:

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

(где pm - это экземпляр PackageManager).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...