2013-07-01 106 views
0

我想要使用以下代码获取已安装应用程序图标的列表,但它只显示可绘制路径的列表,但不显示图标(即android.graphics.drawable.BitmapDrawable @ 417530c8),如何获取已安装应用程序图标的列表

有人可以告诉我我做错了什么。

由于

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ListView appList = (ListView) findViewById(R.id.appList); 

    ArrayList<Drawable> cacheArrayList = new ArrayList<Drawable>(); 

    ArrayAdapter<Drawable> aa = new ArrayAdapter<Drawable>(this, 
      android.R.layout.simple_list_item_1, cacheArrayList); 

    appList.setAdapter(aa); 

    PackageManager pm = getPackageManager(); 
    List<ApplicationInfo> packages = pm 
      .getInstalledApplications(PackageManager.GET_META_DATA); 
    for (ApplicationInfo packageInfo : packages) { 
     // cacheArrayList.add((String) packageInfo.loadLabel(pm)); 
     cacheArrayList.add(packageInfo.loadIcon(pm)); 

    } 

} 

}

回答

0

缺省情况下,只有ArrayAdapter底层数组中的每个元素调用toString。同样要使用ImageView,您需要编写一个覆盖getView方法的ArrayAdapter的子类。使用包含ImageView的布局,然后将其覆盖的getView调用setImageDrawable,并从阵列中传递Drawable

相关问题