android– 动态显示资源 drawable中的图像

android– 动态显示资源 drawable中的图像,第1张

概述我正在尝试将不同的图像(.jpg,.png)动态地放入res/drawable的ListView中.我从数据库中获取的图像中的名称.图像本身位于res/drawable文件夹中.这是我已经拥有的,错误:DStringimgName;–&GT我需要从数据库中获取img名称Drawabledrawable;drawable=Class.appC

我正在尝试将不同的图像(.jpg,.png)动态地放入res / drawable的ListVIEw中.
我从数据库中获取的图像中的名称.
图像本身位于res / drawable文件夹中.

这是我已经拥有的,错误:D

String imgname; – &GT我需要从数据库中获取img名称

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 :resolveUri Failed on bad
bitmap uri:
androID.drawable.bitmapDrawable@405739
resolveUri Failed on bad bitmap uri:
androID.drawable.bitmapDrawable@405639
resolveUri Failed on bad bitmap uri:
androID.drawable.bitmapDrawable@405959
resolveUri Failed on bad bitmap uri:
androID.drawable.bitmapDrawable@405677…
… …

当我将图像保存到本地或SDcard内存中时,我将其工作,然后将路径放在arrayList中,如:

map.put("img","/data/data/com.example.test/images/" + imgname);

我不能使用这个因为那时我需要将res / drawable中的图片复制到本地或SD上.这会占用内存的2倍.不能有那个.

必须有一种从drawable动态获取图像的方法.

谁知道我在这里缺少什么?
谢谢.

解决方法:

SimpleAdapter需要一个指定资源或图像URI的整数或字符串:

public voID setVIEwImage (ImageVIEw v, String value)Since: API Level 1

Called by bindVIEw() to set the image for an ImageVIEw but only if there is no existing VIEwBinder or if the existing VIEwBinder cannot handle binding to an ImageVIEw. By default, the value will be treated as an image resource. If the value cannot be used as an image resource, the value is used as an image Uri. This method is called instead of setVIEwImage(ImageVIEw, int) if the supplIEd data is not an int or Integer.

我相信应该使用setViewBinder为SimpleAdapter提供ViewBinder来处理将Drawable数据绑定到ImageVIEw.基本上,除非为图像视图调用,否则setViewValue()方法应返回false.当为图像视图调用它时,该方法应在视图中设置数据并返回true.返回值指示VIEwBinder是否能够设置视图或适配器是否应尝试通过其默认行为绑定数据本身.

也许是这样的:

private final SimpleAdapter.VIEwBinder mVIEwBinder =    new SimpleAdapter.VIEwBinder() {        @OverrIDe        public boolean setVIEwValue(                final VIEw vIEw,                final Object data,                final String textRepresentation) {            if (vIEw instanceof ImageVIEw) {                ((ImageVIEw) vIEw).setimageDrawable((Drawable) data);                return true;            }            return false;        }    };...ListSetup .setVIEwBinder(mVIEwBinder);

我用一个SimpleCursorAdapter和它的VIEwBinder完成了similar thing.

总结

以上是内存溢出为你收集整理的android – 动态显示资源/ drawable中的图像全部内容,希望文章能够帮你解决android – 动态显示资源/ drawable中的图像所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1109393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存