在 Android 中滚动 listView 时图像正在重新加载

Images are reloading when scrolling listView in Android

我有一个 listView,我在其中放置了标题和带有图片的描述,当我向上滚动时图片会重新加载,我该如何解决这个问题?我尝试了一些解决方案,但都失败了...

这是我的代码:

GETVIEW

public class ViewHolder extends ArrayAdapter<ListViewModel> {

    public ViewHolder(Context context, List<ListViewModel> model) {
        super(context, 0, model);
    }

    @Override
    public View getView(int position, View cView, ViewGroup parent) {

        if(cView == null){
            cView = LayoutInflater.from(getContext()).inflate(R.layout.view_list_holder,parent, false);
        }
        ListViewHolder viewHold = (ListViewHolder) cView.getTag();
        if(viewHold == null){
            viewHold = new ListViewHolder();
            viewHold.title = (TextView) cView.findViewById(R.id.title);
            viewHold.content = (TextView) cView.findViewById(R.id.content);
            viewHold.picture = (ImageView) cView.findViewById(R.id.picture);
            cView.setTag(viewHold);
        }

        ListViewModel model = getItem(position);
        viewHold.title.setText(model.getTitle());
        viewHold.content.setText(model.getContent());
        if (viewHold.picture != null)
            new DownloadImageTask(viewHold.picture).execute(model.getPicture());
        return cView;
    }

    private class ListViewHolder{
        public TextView title;
        public TextView content;
        public ImageView picture;
    }
}

ImageDownloader

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 myImage = null;
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            myImage = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return myImage;
    }

    protected void onPostExecute(Bitmap result) {

        bmImage.setImageBitmap(result);
    }
}

能不能把图片保存在activity的位图数组中?然后只显示那些。因此它们从不重新加载,它们只是在 activity 中用于视图?

尝试使用 Volley 而不是 AsyncTask:

http://developer.android.com/training/volley/request.html

它内置了对图像缓存的支持,以及在用户滚动离开时不再需要一组特定图像时取消请求的功能。