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

时间:2011-06-10 14:03:50

标签: android android-widget

我想在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]包含我的图片的网址。

我编写了一个函数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 个答案:

答案 0 :(得分:0)

尝试使用此方法从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;
    }   
}