Java 如何将包图标添加到arraylist中

Java 如何将包图标添加到arraylist中,java,android,arraylist,Java,Android,Arraylist,如何将从结果中获得的应用程序图标放入arraylist 如果我使用 attrs.icon(“包名”,pkg.applicationInfo.loadIcon(getPackageManager()) 它显示了这个错误 类型映射的方法图标(字符串,可绘制)未定义 如果我使用 attrs.put(“包名”,pkg.applicationInfo.loadIcon(getPackageManager()) 它显示了这个错误 类型映射中的方法put(String,String)不适用于参数(String

如何将从结果中获得的应用程序图标放入arraylist

如果我使用
attrs.icon(“包名”,pkg.applicationInfo.loadIcon(getPackageManager())

它显示了这个错误 类型映射的方法图标(字符串,可绘制)未定义

如果我使用
attrs.put(“包名”,pkg.applicationInfo.loadIcon(getPackageManager())

它显示了这个错误 类型映射中的方法put(String,String)不适用于参数(String,Drawable)

我已经试过了

可绘制图标

attrs.icon(“包名”,pkg.applicationInfo.loadIcon(getPackageManager())

Drawable Icon=pm.getApplicationIcon(pkg.applicationInfo)

eclipse上的所有给定错误

这是密码

protected void onPostExecute(List < PackageInfo > result) {

    // Here you will have all the setAdapter related code
    List < PackageInfo > adPackages = result;
    PackageManager pm = getPackageManager();

    List < Map < String, String >> data = new ArrayList < Map < String, String >> (
    adPackages.size());

    for (PackageInfo pkg: adPackages) {
        Map < String, String > attrs = new HashMap < String, String > ();

        attrs.put("App Name", pm.getApplicationLabel(pkg.applicationInfo).toString());
        attrs.put("Package Name", pkg.packageName);
        //Drawable icon;
        //attrs.icon("Package Name", pkg.applicationInfo.loadIcon(getPackageManager()));
        // Drawable Icon = pm.getApplicationIcon(pkg.applicationInfo);
        data.add(attrs);

    }

    String[] from = new String[] {
        "App Name", "Package Name"
    };
    int[] to = new int[] {
        R.id.text1, R.id.text2
    };
    SimpleAdapter adapter = new SimpleAdapter(
    AppsInspectorActivity.this, data, R.layout.two_line_list_item, from, to);

    ListView mList = (ListView) findViewById(R.id.l_list);

    mList.setAdapter(adapter);
    mPackages = adPackages;

}
}
protectedvoid onPostExecute(列表result){
//这里有所有与setAdapter相关的代码
列表adPackages=结果;
PackageManager pm=getPackageManager();
List>data=newarraylist>(
adPackages.size());
适用于(PackageInfo包装:adPackages){
Mapattrs=newhashmap();
attrs.put(“应用程序名称”,pm.getApplicationLabel(pkg.applicationInfo.toString());
属性put(“包装名称”,包装名称);
//可绘制图标;
//attrs.icon(“包名”,pkg.applicationInfo.loadIcon(getPackageManager());
//可绘制图标=pm.getApplicationInfo(pkg.applicationInfo);
添加数据(属性);
}
String[]from=新字符串[]{
“应用程序名”、“程序包名”
};
int[]至=新int[]{
R.id.text1,R.id.text2
};
SimpleAdapter适配器=新SimpleAdapter(
AppsInspectorActivity.this,data,R.layout.two_line_list_item,from,to);
ListView mList=(ListView)findViewById(R.id.l_列表);
mList.setAdapter(适配器);
mPackages=adPackages;
}
}

attrs
是一个映射,因此它没有名为“icon”的方法。您只需执行
attrs.put(“icon”,pkg.applicationInfo.icon+”)

之所以有
+”
,是因为pkg.applicationInfo.icon是一个整数,所以您需要将其转换为字符串,然后才能将其放入使用参数化的映射中。谢谢,它可以工作,但当我切换到
attrs.put(“icon”,pkg.applicationInfo.loadIcon(getPackageManager())+”它显示空图标,我缺少什么吗?您的属性映射定义为只能将字符串作为值保存(因此您不能加载图标并将其存储在该映射中)。与整数不同,您不能简单地将“”添加到图像中以将其转换为字符串。