我有一个hashmap数组,我将信息放入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);
}
我尝试了一种获取图像的方法,使其成为位图,然后将其转换为drawable,但由于hmdata.put采用字符串,因此无法将其添加到数组中...我缺少什么图像加载?
答案 0 :(得分:2)
我认为最好的办法是创建一个可以包含您感兴趣的所有元素的新对象。
您应该创建一个名为“Product”的新对象,该对象将XmlDom作为其构造函数,并具有“title”,“desc”和“thumbnail”的getter。这些getter将分别返回String,String和Bitmap。
您应该能够使用HttpClient或类似的Android网络客户端下载图像:HttpClient
下载图像后,您可以使用BitmapFactory将其转换为位图,以便与ImageView一起使用。
然后,您可以将自定义“Product”对象添加到列表中供以后使用。
示例:
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 ...
}