こんにちは私は以下のチュートリアルに従って、私のアプリケーションにインストールされているすべてのアプリケーションを正常に表示しました。インストールされているアプリケーションのアルファベット化
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;
}
私は上記を編集しましたが、エラーがあります。私のクラスではListについて何も持っていませんList は同じですか? –
GFlam
これは、私のAsyncTask Appローダーで持っていた2つの問題を解決しました。ありがとう。 –
ApplicationInfoの代わりにPackageInfoをソートしたい場合は@ https://stackoverflow.com/a/47198817/997940 –