待实现的接口
public interface ImageCallback {
void imageLoad(Drawable image,String imageUrl);
}
回调接口的方法
//参数有一个实现回调接口的imageCallback对象
public Drawable loadDrawable(final String imageUrl,final ImageCallback imageCallback){
Log.i("AsyncLoadImage", "loadDrawable()"+imageUrl);
//如果缓存中有则从缓存中取出来
if(imageCache.containsKey(imageUrl)){
SoftReference<Drawable> softReference = imageCache.get(imageUrl);
if(softReference.get()!=null){//判断是否有drawable
return softReference.get(); //有则返回
}
}
//使用线程池下载图片
executorService.submit(new Runnable(){
@Override
public void run() {
try {
// final Drawable drawable = Drawable.createFromStream(new URL(imageUrl).openStream(), "image.jpg");
final Drawable drawable = getDrawableFormUrl(imageUrl); //调用获取数据的方法
imageCache.put(imageUrl, new SoftReference<Drawable>(drawable));//将加载的图片放入到内存中
mHandler.post(new Runnable(){
@Override
public void run() {
//调用回调接口的方法,已由imageCallback实现!
imageCallback.imageLoad(drawable,imageUrl);//接口回调
}
});
} catch (Exception e) {
throw new RuntimeException();
}
}
});
return null ;
}
一个列表适配器的getview方法,已重写
@Override
public View getView( int position, View convertView, ViewGroup parent) {
Log.i(TAG, "getView()");
if(convertView == null){
//获取布局
convertView = LayoutInflater.from(cext).inflate(R.layout.item_image, null);
//获取布局里面的ImageView组件
final ImageView imageView = (ImageView)convertView.findViewById(R.id.item_imageView);
//获取当前的图片的url地址
final String url = urlList.get(position).getImageUrl();
//为图片设置一个tag 这个很重要这样的目的是为了控制每个ImageView组件都显示对应的图片
imageView.setTag(url);
Log.i(TAG, "初始化"+(position));
//开始异步加载图片
//[color=red]实例化一个实现接口的对象,供上一段代码loadDrawable调用[/color]
Drawable drawable = asyncLoadImage.loadDrawable(url, new AsyncLoadImage.ImageCallback(){
@Override
public void imageLoad(Drawable image,String imageUrl) {
//判断当前的url地址是否为当前组件的url地址 是则加载图片
if(imageUrl.equals(imageView.getTag())){
imageView.setImageDrawable(image);
}
}
});
}else{
Log.i(TAG, "完成后的初始化"+(position));
final ImageView imageView = (ImageView)convertView.findViewById(R.id.item_imageView);
final String url = urlList.get(position).getImageUrl();
imageView.setTag(url);
Drawable drawable = asyncLoadImage.loadDrawable(url, new AsyncLoadImage.ImageCallback(){
@Override
public void imageLoad(Drawable image,String imageUrl) {
if(imageUrl.equals(imageView.getTag())){
imageView.setImageDrawable(image);
}
}
});
}
return convertView;
}
分享到:
相关推荐
5.2.2 客户端回发/回调揭密 150 5.2.3 回传数据处理接口ipostbackdatahandler 153 5.2.4 正确处理继承基类中控件的事件 159 5.2.5 扩展kingtextbox控件功能(kingtextboxcanpostevent控件) 161 5.3 复合控件的...
5.2.2 客户端回发/回调揭密 150 5.2.3 回传数据处理接口ipostbackdatahandler 153 5.2.4 正确处理继承基类中控件的事件 159 5.2.5 扩展kingtextbox控件功能(kingtextboxcanpostevent控件) 161 5.3 复合控件的...
5.2.2 客户端回发/回调揭密 150 5.2.3 回传数据处理接口ipostbackdatahandler 153 5.2.4 正确处理继承基类中控件的事件 159 5.2.5 扩展kingtextbox控件功能(kingtextboxcanpostevent控件) 161 5.3 复合控件的...
5.2.2 客户端回发/回调揭密150 5.2.3 回传数据处理接口ipostbackdatahandler153 5.2.4 正确处理继承基类中控件的事件159 5.2.5 扩展kingtextbox控件功能(kingtextboxcanpostevent控件)161 5.3 复合控件的事件...
当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用...
当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用...
c) NotSupported方式在容器回调OnMessage方法之后才启动事务 d) MDB不支持Required事务属性 参考答案 21) 关于WSDL不正确的说法是 bc a a) 用来描述Web服务的XML文件 b) 全称是WEB SERVICES DEFINITION ...
Asp.Net2.0无刷新客户端回调 体验.net 2.0 的优雅(1) -- 异步WebService调用 ASP.NET 2.0页面框架的几点新功能 ASP.NET 2.0 中收集的小功能点 asp.net2.0中的webpart使用小记 2.0问题、错误解决办法 ASP.NET 2.0...
目录 网络驱动程序设计指南 1 第一部分 网络驱动程序 2 ...第四章 TDI例程、宏和回调 251 4.1 TDI驱动程序初始化 251 4.1.1 注册TDI传输驱动程序 252 4.1.2 卸载和注销TDI传输驱动程序 252 4.2 TDI...
(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文《详解Android中Fragment的两种创建方式》,就如何创建Fragment混合布局做了详细的分析,今天就来详细说道...
11.1.3使用回调函数作为异步访问的通知 11.1.4异步访问与设备驱动 11.2异步Fifo驱动例子 11.2.1在virtualfifo驱动中增加异步通知 11.2.2在用户空间验证virtualfifo的异步通知 第12章Linux块设备驱动 12.1块设备的I/O...
IrDA微端口NIC驱动程序 178 13.1 IrDA微端口驱动程序简述 178 13.2 IrDA体系结构 179 13.3 IrDA协议驱动程序 179 13.4 IrDA介质特征 179 13.4.1 通信连接速度 180 13.4.2 通信连接回转时间 180...
3.3 用于客户端的回调定义................................................................. 53 3.4 OPC服务器的设计及初步实现..................................................... 55 3.5 OPC服务器的...
08 接口继承与归一化设计 09 继承顺序之mro线性顺序列表 10 在python2中的继承顺序是什么 11 在子类中调用父类方法 12 super调用父类的方法 13 选择系统作业讲解 第26章 01 学生自主复习 02 分享列表 03 多态 04 ...