0

さまざまな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);

ビットマップをDrawableに変換し、マップしてからリストに追加します。

4

1 に答える 1

1

SimpleAdaterの代わりにBaseAdapterを使用することをお勧めします。これにより、データを表示する内容と方法をより柔軟に設定し、getViewメソッドを介して画像を設定できます(詳細については、このビデオをご覧ください)。

また、使用可能なメモリと比較して使用するメモリの量がわからないため、このような方法でビットマップを保存しないことをお勧めします。代わりにキャッシュメカニズムを使用してください(詳細については、こちらをお読みください)。

于 2012-12-29T13:41:21.583 に答える