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>

チェックアウト:インストール済みアプリのリストをアルファベット順に並べる

于 2013-06-04T18:28:16.807 に答える