Bonjour, je suis en train de développer une application android dont j'utilise une liste view pour présenter quelque image dedans. mais toujours j'obtiens une exception OutOfMemoryError,

NB: site.getImage() est de type byte[]

voila mon code:

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
public class MySiteAdaptor extends ArrayAdapter<NewSite> {
 
	private Context context;
	private int layoutResourceId;
	private List<NewSite> data;
	private LayoutInflater mInflater;
	private OnSelectedFromFragment onSelectedFromFragment;
 
	public MySiteAdaptor(Context context, int layoutResourceId,
			List<NewSite> data, OnSelectedFromFragment onSelectedFromFragment) {
		super(context, layoutResourceId, data);
		this.context = context;
		this.layoutResourceId = layoutResourceId;
		this.data = data;
		this.onSelectedFromFragment = onSelectedFromFragment;
		mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	}
 
 
	@Override
	public View getView(final int position, View convertView, ViewGroup parent) {
 
		View row = convertView;
		SiteHolder holder = null;
		ImageView view;
		Bitmap bmp = null;
		BitmapFactory.Options options = new BitmapFactory.Options();
 
 
		if (row == null) {
			LayoutInflater inflater = ((Activity) context).getLayoutInflater();
			row = mInflater.inflate(layoutResourceId, parent, false);
 
			holder = new SiteHolder();
			holder.image = (ImageView) row.findViewById(R.id.imageView_site);
			holder.informations = (TextView) row.findViewById(R.id.site_information);
			holder.listOfImages = (LinearLayout) row.findViewById(R.id.sub_site_images);
 
			row.setTag(holder);
		} else {
			holder = (SiteHolder) row.getTag();
		}
 
		final NewSite site = data.get(position);
 
		if(null != site.getImage()){
			options.inSampleSize = site.getImage().length;
			Bitmap bmpSite = BitmapFactory.decodeByteArray(site.getImage(), 0, site.getImage().length, options);
			holder.image.setImageBitmap(bmpSite);
 
		}
		if(null != site.getDescription())
			holder.informations.setText(site.getDescription() + "    " + position);
 
		try {
 
 
		if(site.getListOfChildren() != null && site.getListOfChildren().size() != 0){
			Log.i("BitmapFactory", site.getListOfChildren().size() + " " + position);
			for (NewSite newSite : site.getListOfChildren()) {
 
 
				if(null != newSite.getImage()){
					options.inSampleSize = site.getImage().length;
					bmp = BitmapFactory.decodeByteArray(newSite.getImage(),0,newSite.getImage().length, options);
 
					//holder.image.setImageBitmap(bmp);//(site.getImageSite());
					view = new ImageView(context);
 
					view.setLayoutParams(new LayoutParams(30, 20));
					view.setPadding(2, 0, 2, 2);
 
					view.setImageBitmap(bmp);
 
					holder.listOfImages.addView(view);
 
				}
 
			}
		}
		} catch (OutOfMemoryError e) {
		}
 
		return row;
	}
 
	class SiteHolder {
		ImageView image;
		TextView informations;
		LinearLayout listOfImages;
	}

merci d'avance