我正在尝试从res/drawable
文件夹中将不同的图片(.jpg,.png)动态放入一个ListView
中。这些图片的名称来自数据库,而图片本身位于res/drawable
文件夹中。
以下是我目前的代码,但有一个错误:
String imgName; --> 这里是我需要从数据库获取的图片名称
Drawable drawable;
drawable = Class.appContext.getResources().getDrawable(Class.appContext.getResources().getIdentifier("com.example.test:drawable/"+imgName,null,null));
然后我为数据库中的每个图像将其存入一个ArrayList
(大约有200张图片):
ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> map = new HashMap<String, Object>();
map = new HashMap<String, Object>();
map.put("img",drawable);
map.put("text", "some text");
list.add(map);
现在我返回列表;
在我调用的类中:
listReceive = Class.getImages(appContext);
listSetup = new SimpleAdapter(this, listReceive, R.layout.row,
new String[] {"img", "text"}, new int[] {R.id.IMG_CELL, R.id.TEXT_CELL});
lvList.setAdapter(listSetup);
XML行是一个ImageView
和一个TextView
。
System.out:在坏位图URI上resolveUri失败: android.drawable.bitmapDrawable@405739 在坏位图URI上resolveUri失败: android.drawable.bitmapDrawable@405639 在坏位图URI上resolveUri失败: android.drawable.bitmapDrawable@405959 在坏位图URI上resolveUri失败: android.drawable.bitmapDrawable@405677... ... ...
当我将图片保存到本地或SD卡内存中,然后将路径放入arraylist中时,它可以正常工作:
map.put("img","/data/data/com.example.test/images/" + imgName);
我不能使用这个,因为那样我就需要将图片从res/drawable
复制到本地或SD卡中。这会占用两倍的内存,这是不可行的。
必须有一种方法可以动态地从drawable获取图像。
有人知道我错过了什么吗? 谢谢。