2011-11-17 10 views
8

Witam Postępowałem zgodnie z poniższym samouczkiem iz powodzeniem wymieniłem wszystkie moje zainstalowane aplikacje w mojej aplikacji.Alphabatize lista zainstalowanych aplikacji

List all installed apps in style

jednak nie wymienić je alfabetycznie i nie mogę dowiedzieć się, jak uporządkować je tak, że są. Każda pomoc zostanie doceniona. Próbowałem już kilka rzeczy, takich jak ten, ale nie mogę znaleźć sposobu na zastosowanie ich do tytułów listy aplikacji. Dziękuję za wszelką pomoc z tym

=== EDIT ===

dziękuję za odpowiedzi zrobiłem następujący ale mieć błąd w rodzaju. Błąd brzmi: „Metoda sort (List, komparator) w zbiorach typu nie stosuje się do argumentów (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; 
    } 

Odpowiedz

13

Podczas kwerendy Android aby uzyskać listę zainstalowanych aplikacji, ty otrzyma List<ApplicationInfo>. Android dostarcza ApplicationInfo.DisplayNameComparator dla osób:

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

(gdzie pm jest instancją PackageManager).

+1

Edytowałem powyższe, ale mam błąd. W mojej klasie nie mam nic o liście tylko lista są one prawie takie same? – GFlam

+0

Rozwiązało to dwa problemy z moim programem ładującym AsyncTask. Dzięki. –

+0

@ GFlam, jeśli chcesz posortować PackageInfo zamiast ApplicationInfo, zapoznaj się z moją odpowiedzią tutaj: https://stackoverflow.com/a/47198817/997940 –

Powiązane problemy