接口回调(传值)
1:定义一个接口
2:定义接口中的方法(传参)声明接口
3:在传值方设置添加接口的方法
4:在传值方调用接口中的方法
5:在接受方创建传值方对象,调用设置接口的方法
1:写一个类
public class Bactivity {
private String imgPath="http://p3.so.qhimg.com/bdr/326__/t01488cea27c27cf588.jpg";//图片的网址
private Call call;
public void Load(){//子线程
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
URL url = new URL(imgPath);//网络获取图片
URLConnection conn = url.openConnection();
Bitmap bitmap = BitmapFactory.decodeStream(conn.getInputStream());
Message msg = mHandler.obtainMessage();
msg.what=1;
msg.obj=bitmap;
mHandler.sendMessage(msg);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
Handler mHandler = new Handler(){
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what==1) {
Bitmap bitmap = (Bitmap) msg.obj;
call.getBitmap(bitmap);
}
};
};
<span style="white-space:pre"> </span>//定义接口(这是重点)
public interface Call{
public void getBitmap(Bitmap bitmap);//接口中的方法
}
<span style="white-space:pre"> </span>//设置添加接口的方法(这是重点)
public void setOnclickListener(Call call){
this.call = call;
}
}
2.MainActivity
public class MainActivity extends Activity implements Call {
private ImageView iv;
private Bactivity bactivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.iv);
bactivity=new Bactivity();
bactivity.Load();
bactivity.setOnclickListener(this);
}
@Override
public void getBitmap(Bitmap bitmap) {
iv.setImageBitmap(bitmap);
}
}
Mainactivity的xml文件里只需要写一个Imageview给个id就可以了