0

我有一个包含从不同 URL 检索的位图的位图列表。

@Override
protected List<Bitmap> doInBackground(Void... params) {
    for (int i=0;i<payss.size();i++){
        try {
            list_drapeaux.add(BitmapFactory.decodeStream((InputStream)new URL(payss.get(i).getLogo()).getContent()));
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return list_drapeaux;
}

payss.get(i).getLogo())包含不同的图像 URL。

我正在使用 SimpleAdapter 在 ListView 中设置这些图像:

final List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
for (int i=0;i<payss.size();i++){
    Map<String,Object> map = new HashMap<String,Object>();
    Bitmap contact_pic = pays_drapeaux.get(i);   
    drawable = new BitmapDrawable(contact_pic); 
    map.put("pays", payss.get(i).getNom());
    map.put("drapeau",contact_pic);
    Log.i("PAYS",payss.get(i).getNom());
    list.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(fa, (List<? extends Map<String, ?>>) list,
    R.layout.pays_item, new String[] {"drapeau","pays"},
    new int[] { R.id.image,R.id.text_pays});
setListAdapter(adapter);

我正在将 Bitmap 转换为 Drawable 并将其添加到地图然后列表中。

4

1 回答 1

1

我建议使用BaseAdapter而不是 SimpleAdater,因为它可以让您更灵活地显示数据的内容和方式,并通过 getView 方法设置图像(观看此视频了解更多信息)。

另外,我建议永远不要以这种方式存储位图,因为您不知道与可用内存相比它们使用了多少内存。改用缓存机制(阅读此处了解更多信息)。

于 2012-12-29T13:41:21.583 回答