按字母顺序排列已安装应用程序的列表

Posted

技术标签:

【中文标题】按字母顺序排列已安装应用程序的列表【英文标题】:Alphabatize list of installed apps 【发布时间】:2011-12-31 17:47:24 【问题描述】:

您好,我按照以下教程成功在我的应用程序中列出了所有已安装的应用程序。

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;
   

【问题讨论】:

【参考方案1】:

当您查询 android 以获取已安装应用程序的列表时,您将获得一个List&lt;ApplicationInfo&gt;。 Android 为这些用户提供ApplicationInfo.DisplayNameComparator

Collections.sort(apps, new ApplicationInfo.DisplayNameComparator(pm)); 

(其中pmPackageManager 的一个实例)。

【讨论】:

我编辑了我的上面但有一个错误。在我的课堂上,我没有任何关于 List 的内容,只是 List 它们差不多吗? 这解决了我在使用 AsyncTask 应用程序加载器时遇到的两个问题。谢谢。 @GFlam 如果您想对 PackageInfo 而非 ApplicationInfo 进行排序,请在此处查看我的回答:***.com/a/47198817/997940

以上是关于按字母顺序排列已安装应用程序的列表的主要内容,如果未能解决你的问题,请参考以下文章

按字母顺序排列的名称和描述列表

按字母顺序排列的核心数据表

我正在创建一个双向链表,它将按字母顺序排列名称列表,但我不确定在 int main() 函数中放入啥

维护按字母顺序排列的链表

获得列表中重复次数最多的名称,如果出现平局,则按字母顺序排列第一个

大神!!求用python写一个程序,找出给定字符串s中按字母表顺序排列的最长子串!