【问题标题】:Drawable is not set in ListViewListView 中未设置 Drawable
【发布时间】:2012-12-29 12:43:53
【问题描述】:

我有一个包含从不同 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 并将其添加到地图然后列表中。

【问题讨论】:

    标签: android android-listview simpleadapter


    【解决方案1】:

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

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

    【讨论】:

    • 好的,注意到信息现在开始在 BaseAdapter 上工作,然后是缓存机制。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 2015-07-11
    • 1970-01-01
    相关资源
    最近更新 更多