2011-02-24 60 views
0

我在将图像转换为Drawable对象时遇到问题。我使用的图像转换:如何将图像从URL转换为可绘制

public Drawable LoadImageFromWebOperations(String url) { 
    try { 
     InputStream is = (InputStream)new URL(url).getContent(); 
     Drawable d = Drawable.createFromStream(is, "src name"); 
     return d; 
    } catch (Exception e) { 
     System.out.println("Exc=" + e); 
     return null; 
    } 
} 

我试图把DrawableHashMap,并插入到一个ListAdapter,但是Drawable的价值始终是一样的东西[email protected]而不是整数,我在logcat中得到的消息

resolveUri失败的坏位URI”。

我这是怎么把DrawableHashMap

map.put("cover", String.valueOf(
    Main.this.LoadImageFromWebOperations("http://www.asdfasfs.com/dasfas.jpg"))); 
+0

尝试改为这个map.put(“cover”,Main.this.LoadImageFromWebOperations(“http://www.asdfasfs.com/dasfas.jpg”)); – ingsaurabh 2011-02-24 10:48:33

+0

这是行不通的,eclipse说:“方法put(String,String)在类型HashMap 中不适用于参数(String,Drawable)” – robs 2011-02-24 10:57:54

+0

显然你必须改变你的通用定义'HashMap'。它应该是'HashMap '。 – 2011-02-24 11:20:33

回答

2

你为什么期望drawable是一个整数?这是一个可以分配给imageView的对象。

你的项目中有些项目可以用他们的ID来引用,这是事实,但那是别的。

R.drawable.icon不是Drawable,在同样的意义上,R.view.your_Button不是Button。你会打电话给getViewFromId()。如果你有一个是这样的一个功能:

doSomethingWithView(R.view.id); 

然后,它不会与(伪ofcourse)工作

myView = new Button(); 
doSomethingWithView(myView); 

所以,如果你的函数有R.drawable.id的作品,这是极不可能的,它的工作原理与可绘制的(除了超载的课程)。

+0

我期望一个整数的原因是因为String.valueOf(“R.drawable.icon”)返回一个10位整数。和map.put(“cover”,“String.valueOf(”R.drawable.icon“));工作正常,但从URL获取drawable不是 – robs 2011-02-24 10:40:43

+0

HashMap的值类型应该是Drawable,而不是String,那么你可以完全丢失String.valueOf(),那么函数做什么呢?Drawable不是一个字符串和/或一个整数...它是一个复杂对象 – 2011-02-24 10:45:41

+0

这是因为'R.drawable.icon'只是一个_pointer_到实际的Drawable。 – 2011-02-24 10:47:09