我想将(R.drawable.logo)object
转换为string
,我想在listview
中展示它。我使用了以下代码,但它不起作用
Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), R.drawable.logo);
ByteArrayOutputStream ByteStream = new ByteArrayOutputStream();
bitmapOrg.compress(Bitmap.CompressFormat.PNG,100, ByteStream);
byte [] b = ByteStream.toByteArray();
String temp = Base64.encodeToString(b, Base64.DEFAULT);
ListAdapter adapter = new SimpleAdapter(
Welcome.this,
contactList,
R.layout.about,
new String[] { TAG_NAME, TAG_SURNAME, temp },
new int[] { R.id.name, R.id.surname, R.id.imageView}
);
list.setAdapter(adapter);
错误: 无法解码流:java.io.FileNotFoundException :: open failed:ENOENT(没有这样的文件或目录)
答案 0 :(得分:0)
要使用ListView
在SimpleAdapter
中显示图片,您无需将图片转换为Base64字符串。
将new String[] { TAG_NAME, TAG_SURNAME, temp }
更改为new String[] { TAG_NAME, TAG_SURNAME, TAG_IMAGE }
。
在contactList
数组中添加图片,如下所示
for(int i = 0; i < length; i++){
HashMap<String, String> hm = new HashMap<String,String>();
hm.put(TAG_NAME, names[i]);
hm.put(TAG_SURNAME, surnames[i]);
hm.put(TAG_IMAGE, Integer.toString(R.drawable.logo) );
contactList.add(hm);
}
这将为所有行设置R.drawable.logo
。
但是你得到的错误是FileNotFoundException
。因此,也要交叉检查图像是否也存在。
检查this SO线程。