2012-10-24 38 views
0

嗯,我试图做一个ListView与图像和文字。我一直在关注这个例子:Android: Custom ListView with Image and Text using ArrayAdapter但我希望列表是关于已安装的应用程序及其图标。我一直在关注另一个示例以获取图标:Get installed Applications with Name, Package Name, Version and Icon自定义ListView与图像,从应用程序安装

我已经能够使用图标创建列表,但无法从安装的应用程序获取它们。如果我使用我的drawable中的任何图片,代码完美无缺。所以问题是我如何获得图标并将它们添加到我的ListView

代码有点大,我会尽量缩小它的大小,并在以后发布。谢谢

回答

1

好,虽然试图使它容易阅读和张贴在这里,我找到了解决方案。这是神奇的代码:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.apps_list_view); 

    rowItems = new ArrayList<AppListRowItem>(); 

    List<PackageInfo> packs = getPackageManager().getInstalledPackages(PackageManager.GET_META_DATA); 
    for(int i=0;i<packs.size();i++) { 
     PackageInfo p = packs.get(i); 

     Pinfo newInfo = new Pinfo(); 
     newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString(); 
     newInfo.pname = p.packageName; 
     newInfo.versionName = p.versionName; 
     newInfo.versionCode = p.versionCode; 
     newInfo.icon = p.applicationInfo.loadIcon(getPackageManager()); 

      PackageNames = p.packageName; 

      AppNames = p.applicationInfo.loadLabel(getPackageManager()).toString(); 

     test = p.applicationInfo.loadIcon(getPackageManager()); 

     AppListRowItem item = new AppListRowItem(test, AppNames, PackageNames); 
     rowItems.add(item); 

    } 

其他一切就像上面发布的链接一样。

+0

我认为将您的答案标记为已接受是一种很好的做法。不过谢谢您分享这个问题。 – Kgrover

+0

是的,我知道,但它说,我必须等到明天才能将其标记为已接受... –