调用loadImage()方法,此方法内部获取图像数据,并将其引用传给callBack.getDrawable()的形参, 通过此形参设置.......
回调类:
public class DownloadImage {
private String image_path;
public DownloadImage(String image_path) {
// TODO Auto-generated constructor stub
this.image_path = image_path;
}
public void loadImage(final ImageCallBack callBack)
{
final Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
callBack.getDrawable((Drawable)msg.obj);
}
};
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
Drawable drawable = Drawable.createFromStream(new URL(image_path).openStream(), "");
Message message = Message.obtain();
message.obj = drawable;
handler.sendMessage(message);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
//接口的回调方式
public interface ImageCallBack
{
public void getDrawable(Drawable drawable);
}
}
获取回调中的值:
DownloadImage downloadImage = new DownloadImage(CommonUri.PRODUCT_IMG + list.get(position).get("proimage").toString());
downloadImage.loadImage(new DownloadImage.ImageCallBack() {
@Override
public void getDrawable(Drawable drawable) {
// TODO Auto-generated method stub
imageView.setImageDrawable(drawable);
}
});