この動作について少し説明したいと思います:
リストビューを作成しました。リストビューの各項目には、URL からの画像で埋められる画像ビューがあります。
リストまで下にスクロールすると、アイテムが表示されたときに各画像が読み込まれます => OK
しかし、上にスクロールすると、以前にロードされた画像が再度ダウンロードされます。
この動作を停止するにはどうすればよいですか?
これが私のダウンローダーのコードです:
public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
そして、ここに私のアダプターのコードがあります:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Activity activity = (Activity) getContext();
LayoutInflater inflater = activity.getLayoutInflater();
View rowView;
ArticleHome article = getItem(position);
if (position == 0) {
rowView = inflater.inflate(R.layout.item_ligne_home_premier, null);
new DownloadImageTask((ImageView) rowView.findViewById(R.id.imgimg)).execute(article.getImage());
TextView textView = (TextView) rowView.findViewById(R.id.titlenew);
textView.setText(article.getTitle());
textView.setTypeface(faceLight);
}
else {
rowView = inflater.inflate(R.layout.item_ligne_home, null);
new DownloadImageTask((ImageView) rowView.findViewById(R.id.imgimg)).execute(article.getImage());
TextView title = (TextView) rowView.findViewById(R.id.titlearticleothers);
title.setText(article.getTitle());
title.setTypeface(faceBold);
TextView desc = (TextView) rowView.findViewById(R.id.descriptionarticleothers);
// Add test si < a une certaine longeuryr
desc.setText(article.getDescription().substring(0, 100));
desc.setTypeface(faceLight);
}
// img.setImageAlpha(1680);
// img.setImageAlpha(1880); // Pasmal plus haut plus foncé
return rowView;
}