public class AsyncImageLoader {    //SoftReference是软引用,是为了更好的为了系统回收变量    private HashMap<String, SoftReference<Drawable>> imageCache;    public AsyncImageLoader() {        imageCache = new HashMap<String, SoftReference<Drawable>>();    }        public Drawable loadDrawable(final String imageUrl,final ImageView imageView, final ImageCallback imageCallback){        if (imageCache.containsKey(imageUrl)) {            //从缓存中获取            SoftReference<Drawable> softReference = imageCache.get(imageUrl);            Drawable drawable = softReference.get();            if (drawable != null) {                return drawable;            }        }        final Handler handler = new Handler() {            public void handleMessage(Message message) {                imageCallback.imageLoaded((Drawable) message.obj, imageView,imageUrl);            }        };        //建立新一个新的线程下载图片        new Thread() {            @Override            public void run() {                Drawable drawable = loadImageFromUrl(imageUrl);                imageCache.put(imageUrl, new SoftReference<Drawable>(drawable));                Message message = handler.obtainMessage(0, drawable);                handler.sendMessage(message);            }        }.start();        return null;    }        public static Drawable loadImageFromUrl(String url){        URL m;        InputStream i = null;        try {            m = new URL(url);            i = (InputStream) m.getContent();        } catch (MalformedURLException e1) {            e1.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        Drawable d = Drawable.createFromStream(i, "src");        return d;    }        //回调接口    public interface ImageCallback {        public void imageLoaded(Drawable imageDrawable,ImageView imageView, String imageUrl);    }}public class WeiBoAdapater extends BaseAdapter{        private AsyncImageLoader asyncImageLoader;        @Override        public int getCount() {            // TODO Auto-generated method stub            return wbList.size();        }        @Override        public Object getItem(int position) {            // TODO Auto-generated method stub            return wbList.get(position);        }        @Override        public long getItemId(int position) {            // TODO Auto-generated method stub            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            // TODO Auto-generated method stub            convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.weibo, null);            WeiBoHolder wh = new WeiBoHolder();            wh.wbicon = (ImageView) convertView.findViewById(R.id.wbicon);            wh.wbtext = (TextView) convertView.findViewById(R.id.wbtext);            wh.wbtime = (TextView) convertView.findViewById(R.id.wbtime);            wh.wbuser = (TextView) convertView.findViewById(R.id.wbuser);            wh.wbimage=(ImageView) convertView.findViewById(R.id.wbimage);            WeiBoInfo wb = wbList.get(position);            if(wb != null)            {                convertView.setTag(wb.getId());                wh.wbuser.setText(wb.getUserName());                wh.wbtime.setText(wb.getTime());                wh.wbtext.setText(wb.getText(), TextView.BufferType.SPANNABLE);                                Drawable cachedImage = asyncImageLoader.loadDrawable(wb.getUserIcon(), wh.wbicon, new ImageCallback(){                   public void imageLoaded(Drawable imageDrawable,ImageView imageView,String imageUrl){                       imageView.setImageDrawable(imageDrawable);                   }                });                if (cachedImage == null)                {                    wh.wbicon.setImageResource(R.drawable.usericon);                }else{                    wh.wbicon.setImageDrawable(cachedImage);                }                                }                                  return convertView;        }            }

更多相关文章

  1. Android开发性能优化大总结
  2. Android(安卓)网络通信框架Volley简介
  3. Android延时执行方法
  4. android不同Activity之间的数据共享
  5. Android(安卓)Universal Image Loader 源码分析(转载)
  6. Android中的android.provider.Settings.System系统属性设定
  7. Windows7下使用Eclipse搭建Cocos2dx+Android开发环境
  8. 【自用】Android中一个简单的计时器,用Handler加Runnable线程实现
  9. android中异步加载网络图片

随机推荐

  1. android 4.0 NetworkOnMainThreadExcepti
  2. android有用的知识
  3. Android(安卓)常见的几种加密方式RSA、CB
  4. Android ListView嵌套Button,Button事件
  5. Android 将activity设置成对话框样式
  6. Ionic新建项目(以Android为例)
  7. androidのMMS短信发送过程(二)
  8. android 获取手机信息(device ip,os versio
  9. 【android】解决设置ImageView的scaletyp
  10. 如何制作Jar包并在android中调用jar包