1

我有一个哈希图数组,我将信息从 XML 文件中放入。我应该如何下载图像以使其在我的列表视图中可用?

这是我的代码:

public void dealsCb(String url, XmlDom xml, AjaxStatus status) {

        List<XmlDom> products = xml.tags("Product");
        List<HashMap<String, String>> titles = new ArrayList<HashMap<String, String>>();

        for (XmlDom product : products) {
            HashMap<String, String> hmdata = new HashMap<String, String>();
            hmdata.put("title", product.text("Product_Name"));
            hmdata.put("desc", product.text("Sale_Price"));

            //NEED TO DOWNLOAD IMAGE FROM THIS URL AND THEN ADD TO ARRAY....
            hmdata.put("thumb", product.text("Image_URL"));

            titles.add(hmdata);
        }

        String[] from = { "thumb", "title", "desc" };

        int[] to = { R.id.icon, R.id.title, R.id.desc };

        SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), titles,
                R.layout.activity_deals_item, from, to);

        ListView listView = (ListView) findViewById(R.id.list);

        listView.setAdapter(adapter);

    }

我尝试了一种获取图像的方法,使其成为位图,然后将其转换为可绘制对象,但是由于 hmdata.put 需要一个字符串,因此无法将其添加到数组中...我在加载图像时缺少什么?

4

1 回答 1

2

我认为您最好的选择是创建一个新对象,该对象可以包含您有兴趣使用的所有元素。

您应该创建一个名为“Product”的新对象,该对象采用 XmlDom 作为其构造函数,并具有用于“title”、“desc”和“thumbnail”的 getter。这些 getter 将分别返回 String、String 和 Bitmap。

您应该能够使用 HttpClient 或一些类似的 android 网络客户端下载图像:HttpClient

下载图像后,您可以使用BitmapFactory将其转换为用于 ImageView 的位图。

然后,您可以将自定义“产品”对象添加到列表中以供以后使用。

例子:

public class Product{

   String title;
   String desc;
   Bitmap image;

   public Product(XmlDom x){ 
        ... download image, and assign to instance variables ... 
   }

   public String getTitle(){ return this.title; }

   ... more getters ...
}
于 2013-02-21T20:55:33.410 回答