2011-11-17 7 views
8

こんにちは私は以下のチュートリアルに従って、私のアプリケーションにインストールされているすべてのアプリケーションを正常に表示しました。インストールされているアプリケーションのアルファベット化

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

しかし、それをアプリリストのタイトルに適用する方法を見つけることができません。 EDIT ===

===この

を持つ任意の助けてくれてありがとう、私は次のようでした返信いただきありがとうございますが、ソートにエラーが発生しています。あなたがインストールされたアプリケーションのリストを取得するには、Androidを照会するとエラーが発生しますが、「(、一覧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

を読み込みList<ApplicationInfo>となります。アンドロイドは、それらのためApplicationInfo.DisplayNameComparatorを供給する:(pmPackageManagerのインスタンスである)

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

+1

私は上記を編集しましたが、エラーがあります。私のクラスではList について何も持っていませんList は同じですか? – GFlam

+0

これは、私のAsyncTask Appローダーで持っていた2つの問題を解決しました。ありがとう。 –

+0

ApplicationInfoの代わりにPackageInfoをソートしたい場合は@ https://stackoverflow.com/a/47198817/997940 –

関連する問題