我的资源文件夹中有一些图像,我想使用SimpleAdapter将它们加载到ListView中。
我通过文件名引用图像,例如:“my_image.jpg”。
以下是一些代码:
ListView lv = (ListView) findViewById(R.id.list);
rows = new ArrayList<Map<String, Object>>();
for (String s : imageNames) {
rows.add(createRow(s));
}
SimpleAdapter adapter = new SimpleAdapter(
this,
rows,
R.layout.card_list_row,
new String[] {"Image"},
new int[] {R.id.list_row_image});
lv.setAdapter(adapter);
createRow方法:
private Map<String, Object> createCardRow(String s) {
Map<String, Object> row = new HashMap<String, Object>();
row.put("Image", "file:///android_asset/" + s + ".jpg");
return row;
}
执行此操作时,出现以下错误:
02-12 20:01:22.615: I/System.out(17876): resolveUri failed on bad bitmap uri: file:///android_asset/my_image.jpg
还有一个FileNotFoundException。我显然知道该图像确实存在于assets文件夹中。我怎样才能正确引用它?
答案 0 :(得分:0)
请使用AssetManager
使用硬编码的绝对路径绝不是一个好的做法,无论它是否有效。
网上有很多源代码示例,请谷歌搜索。
编辑:
你看到assetManager中有一个open
方法,它为指定的文件资源返回InputStream
。然后,您可以使用decodeStream
获取Bitmap
对象。
一旦您需要图像,就可以使用上述步骤。你可以很容易地找到一个例子,我不会在这里展示它。
答案 1 :(得分:0)
您好尝试使用以下功能。
public void loadDataFromAsset(String imagenamefomdb) {
try {
InputStream ims = getAssets().open(imagenamefomdb);
Drawable d = Drawable.createFromStream(ims, "image");
imageview.setImageDrawable(d);
ims.close();
} catch (IOException ex) {
return;
}
}
希望它适合你