2

我有以下代码:

packageManager = getPackageManager();
    List<PackageInfo> packageList = packageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS);
    List<PackageInfo> installedapps = new ArrayList<PackageInfo>();

    for(PackageInfo apps: packageList){
        if(!isSystemPackage(apps)){
            installedapps.add(apps);
        }
    }


   Collections.sort(installedapps, new Comparator<PackageInfo>(){
        public int compare(PackageInfo o1, PackageInfo o2) {
            return o1.packageName.compareTo(o2.packageName);
        }
    });



    apkList = (ListView) findViewById(R.id.listView);
    apkList.setAdapter(new AppInfoAdapter(this, installedapps, packageManager));

installedapps 是设备上所有应用程序减去系统应用程序的列表。我唯一想做的就是按字母顺序对它们进行排序,不太清楚如何。

4

2 回答 2

1

据我了解,您想PackageInfo按名称的字母顺序对对象列表进行排序。我会从这里开始。您要做的是为您调用的 ArrayList 创建一个自定义 Comparator ,installedapps然后 sort 正在使用Collections.sort(..). PackageInfo您应该用于排序的属性p.packageName是应用程序的完全限定名称(您可以使用正则表达式来隔离包名称的最后一部分)。您可以在此处找到隔离应用程序外观属性的示例。

于 2013-06-04T18:15:20.037 回答
0

Android 提供了一个 ApplicationInfo.DisplayNameComparator 可用于排序

List<ApplicationInfo>

签出:Alphabatize 已安装应用程序列表

于 2013-06-04T18:28:16.807 回答