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);

    }

画像を取得してビットマップにし、ドローアブルに変換するメソッドを試しましたが、hdata.put が文字列を受け取るため、配列に追加できません...画像の読み込みで何が欠けていますか?

4

1 に答える 1

2

最善の策は、使用したいすべての要素を含むことができる新しいオブジェクトを作成することだと思います。

コンストラクターにXmlDomを取り、「title」、「desc」、および「thumbnail」のゲッターを持つ「Product」という新しいオブジェクトを作成する必要があります。これらのゲッターは、それぞれ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 ...
}
于 2013-02-21T20:55:33.410 に答える