8
嗨,我遵循以下教程,併成功地列出了我的應用程序中的所有安裝的應用程序。Alphabatize安裝的應用程序列表
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);
但無法弄清楚如何將它應用到應用列表標題。感謝您對本
===編輯===
任何幫助,感謝您對我做了如下的答覆,但對排序錯誤。錯誤讀取「在類型集合的方法排序(名單,比較器)是不適用的參數(列表,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的列表他們差不多嗎? –
GFlam
這解決了我在使用AsyncTask App加載器時遇到的兩個問題。謝謝。 –
@GFlam如果您想對PackageInfo進行排序而不是ApplicationInfo,請在此處查看我的答案:https://stackoverflow.com/a/47198817/997940 –