从网络异步加载listView中图片

来源:互联网 发布:程序员的数学 编辑:程序博客网 时间:2024/04/20 03:30

用一个Map<Integer,Bitmap>
cavasImageTask取到图片后把图片放到map里
键是listivew的position。
在getView里面先判断map里是否有,如果有直接拿,没有的话再asyncTask.execute.


public View getView(int position, View convertView, ViewGroup parent) {    // TODO Auto-generated method stub    if (convertView == null) {        holder = new NewsHolder();        convertView = inflater.inflate(R.layout.newitem, null);        holder.img = (ImageView) convertView.findViewById(R.id.img);        holder.title = (TextView) convertView.findViewById(R.id.title);        holder.content = (TextView) convertView.findViewById(R.id.content);        convertView.setTag(holder);    } else {        holder = (NewsHolder) convertView.getTag();    }    holder.img.setId(position);    holder.img.setTag(this.imgPath[position]);    info = newsList.get(position);    if (info != null) {        holder.title.setText(info.getTitle());        holder.content.setText(info.getContent());    }    if (map.containsKey(position + "")) {        holder.img.setimagebitmap(map.get(position));    } else {        holder.img.setimagebitmap(null);    }    //这里是异步调用图片    new CanvasImageTask().execute(holder.img);    holder.img.setDrawingCacheEnabled(true);    return convertView;}


public class CanvasImageTask extends AsyncTask < ImageView,Void,Bitmap > {    private ImageView gView;    protected Bitmap doInBackground(ImageView...views) {        Bitmap bmp = null;        ImageView view = views[0];        // 根据iconUrl获取图片并渲染,iconUrl的url放在了view的tag中。        if (view.getTag() != null) {            try {                URL url = new URL(view.getTag().toString());                HttpURLConnection conn = (HttpURLConnection) url.openConnection();                conn.setDoInput(true);                conn.connect();                InputStream stream = conn.getInputStream();                bmp = BitmapFactory.decodeStream(stream);                stream.close();            } catch(Exception e) {                Log.v("img", e.getMessage());                return null;            }        }        this.gView = view;        return bmp;    }    protected void onPostExecute(Bitmap bm) {        if (bm != null) {            //此处更新图片            this.gView.setImageBitmap(bm);            this.gView = null;        }    }



0 0
原创粉丝点击