在 ListView 中显示来自 url 的可绘制图像

Posted

技术标签:

【中文标题】在 ListView 中显示来自 url 的可绘制图像【英文标题】:Display drawable image from url in a ListView 【发布时间】:2011-09-12 12:58:51 【问题描述】:

我想在 ListView 中显示新闻(来自 RSS)。我已经成功创建了我的 ListView,正确显示了标题和描述。但我无法显示来自 URL 的图像。

这是我的代码:

maListViewPerso = (ListView) findViewById(R.id.listviewperso);
ArrayList <HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;

int i = 0;
while (i < 55)

    map = new HashMap<String, String>();
    map.put("titre", newsArray[i]);
    map.put("description", newsArray[i+1]));
    map.put("img", newsArray[i+4]);
    listItem.add(map);

    i += 5;


SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(), listItem, 
R.layout.affichageitem, new String[] "img", "titre", "description", 
new int[] R.id.img, R.id.titre, R.id.description);

maListViewPerso.setAdapter(mSchedule);

如您所料,newsArray[i+4] 包含我的图片的 URL。

我编写了一个函数drawable_from_url,它返回一个android.graphics.drawable.Drawable,并且工作正常。我试着写这个:

map.put("img", String.valueOf(drawable_from_url(newsArray[i+4], "newsPic")));

但它也不起作用(没有显示图像)。值的一个例子 String.valueOf(drawable_from_url(newsArray[i+4], "newsPic")) 可能是android.graphics.drawble.BitmapDrawable@481f16d0

有什么想法吗?

谢谢。

【问题讨论】:

【参考方案1】:

试试这个方法从url加载位图

    public  Bitmap setRemoteImage(URL url) 
    try 
        Bitmap bm=null;
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        conn.setDoInput(true);
        conn.connect();
        InputStream is = conn.getInputStream();
        BufferedInputStream bis=new BufferedInputStream(is);
        try 
            bm = BitmapFactory.decodeStream(bis);
         catch (Exception e) 
            // TODO Auto-generated catch block
            MainActivity mm= new MainActivity();
            Drawable dra=mm.getResources().getDrawable(R.drawable.icon);
            Bitmap bb=((BitmapDrawable)dra).getBitmap();
            bm=bb;
        
        is.close();
        return bm;
    catch (IOException e) 
        return null;
       

【讨论】:

以上是关于在 ListView 中显示来自 url 的可绘制图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在从 ListView 项获取的两个地理点之间绘制标记和路线?

解析 JSON 并在 Listview 中显示检索/获取 URL 服务器“无数据”

如何从 URL 下载图像并将其动态存储在我的应用程序的可绘制文件夹中?

ListView 未根据 sqlite 中的名称显示可绘制对象中的正确图像

Xamarin 表单中的可扩展 ListView

Xamarin 表单中具有不同子项的可扩展 ListView