ListView中未设置Drawable

时间:2012-12-29 12:43:53

标签: android android-listview simpleadapter

我有一个包含从不同网址检索到的位图的Bitmap列表。

@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())包含不同的图片网址。

我正在使用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并将其添加到map然后列表。

1 个答案:

答案 0 :(得分:1)

我建议使用BaseAdapter而不是SimpleAdater,因为它可以让您更灵活地显示数据以及如何显示数据,并通过getView方法设置图像(观看this video以获取更多信息)。

另外,我建议永远不要以这种方式存储位图,因为你不知道他们使用多少内存与可用内存相比。使用缓存机制(阅读here以获取更多信息)。