[英]Alphabatize list of installed apps
嗨,我按照下面的教程,成功列出了我的應用程序中所有已安裝的應用程序。
然而,它沒有按字母順序列出它們,我無法弄清楚如何對它們進行排序。 任何有關這方面的幫助將不勝感激。 我嘗試過這樣的一些事情
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);
但無法弄清楚如何將其應用於應用列表標題。 感謝您對此的任何幫助
===編輯===
感謝您回復我做了以下操作,但排序錯誤。 錯誤讀取“類型集合中的方法排序(List,Comparator)不適用於參數(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;
}
當您查詢Android以獲取已安裝的應用程序列表時,您將獲得List<ApplicationInfo>
。 Android為這些提供ApplicationInfo.DisplayNameComparator
:
Collections.sort(apps, new ApplicationInfo.DisplayNameComparator(pm));
(其中pm
是PackageManager
一個實例)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.