Android接口回调interfaceCallBack
来源:互联网 发布:靓家居 网络推广 编辑:程序博客网 时间:2024/05/29 03:47
首先,查看别人和结合自己理解的interface:
1,Java是继承机制的,接口可以实现多个,可以弥补这个缺点,提高各个类的拓展性;
2,接口回调,传值用的,灵活的应用可以使代码飘逸多变,这个也是一直纠结于接口理解的原因。
这边只想简单说说最基本的接口回调,
首先定义一个,里面含有某抽象方法,方法里面需要参数;
其次在某个位置调用接口中的这个方法,对参数进行复制;
最后在某个类实现接口,因为是接口中的方法是抽象方法需要被重写,得到接口中参数,获取参数中的值,
上面三步骤看起来貌似很简单,第一次实现起来遇到了各种各样的小问题。比如第二步的对参数进行赋值,怎么个赋值法,其实需要定一个方法,方法的参数是接口类型的,方法中调用 参数.接口中的方法,赋上值;然后这个方法得被调用,才能执行,执行之后才能对接口中抽象方法进行赋值。
这个时候我就到了需要获取接口中值得这个类,第一步是实现接口重写接口中的方法。第二部定义一个对接口方法参数赋值的类的对象,调用对象中的为接口中抽象方法赋值的方法,就是我们上一段中提到的执行这个方法;调用这个方法的时候因为需要一个接口类型的参数,这个时候直接传入this,这个this可能有些人理解不了,其实本身是需要传入接口类型的对象,由于我们当前的类已经实现了接口,所以我们直接传入this即可。
下面给出一个最简单的小例子:
1:定义接口
public interface ZhongCallBack { public void getName(String name);}
2:为接口中方法的参数赋值:
public class Mom { public void setName(ZhongCallBack zhongCallBack){ String name = "zhonghuibin"; zhongCallBack.getName(name); }}
3:获取接口传过来的值:
public class Zhonghuibin implements ZhongCallBack{ private Mom mom; public Zhonghuibin(Mom mom){ this.mom =mom; } private void aa(){ mom.setName(this); } @Override public void getName(String name) { String Name = name; }}
下面再给出一个在项目中实战的例子:
public class ApiRequestFactory {
Class 1:
public interface HttpCallBackListener { void onSuccess(String response, String url, int id); void failure(Call call, Exception e, int id);
public static void get(final Context context, final String url, Map<String,String> params ,final HttpCallBackListener httpCallBackListener, boolean isShowDialog){ init(context); if (isShowDialog) { if (loadingDialog == null) { loadingDialog = new SpotsDialog(context,"正在加载数据"); } loadingDialog.dismiss(); loadingDialog.show(); } OkHttpUtils .get() .url(ApiUrl.URL+url) .params(params) .build() .execute(new StringCallback() { @Override public void onError(Call call, Exception e, int id) { if (loadingDialog != null) { loadingDialog.dismiss(); loadingDialog = null; } ToastUtils.disPlayShort(context, "网络加载出现异常"); if (httpCallBackListener !=null) { httpCallBackListener.failure(call, e, id); } } @Override public void onResponse(String response, int id) { if (loadingDialog != null) { loadingDialog.dismiss(); loadingDialog = null; } if (response.contains("用户认证系统")){ ToastUtils.disPlayShort(context, "网络连接已断开,请检查网络连接"); return; } if (httpCallBackListener !=null) { httpCallBackListener.onSuccess(response,url, id); } } });
}
Class 2:
public void getBuildList() { getCompanyList(BookingMeetingRoom.this, "m=Androidstation&a=getbuildinglist", share.getCompanyId(), new ApiRequestFactory.HttpCallBackListener() { @Override public void onSuccess(String response, String url, int id) { //下载成功的接口回调 } @Override public void failure(Call call, Exception e, int id) { //下载失败的接口回调 } },true);}
这上面这个例子是在当前项目中直接拷出来的,是一个经过封装的下载,下载成功和失败之后的接口回调,未经过修改,
这里面和上面简单小例子的不同之处在于把接口直接放在了,给接口方法参数赋值的类里面,就是上面的12步写在了一起,这
样赋值起来简单通俗一点。
阅读全文
0 0
- Android接口回调interfaceCallBack
- android 接口 接口回调
- android 接口回调
- Android 接口回调
- android 接口回调
- Android-接口回调
- Android接口回调
- Android 回调接口
- Android接口回调
- android 接口回调
- Android 回调接口
- Android接口回调
- Android 接口回调
- Android接口回调
- android接口回调
- 44 Android 接口回调
- Android 中的接口回调
- Android 中的接口回调
- 面试时,面试官问我什么是“产品思维”?
- LTE小区搜索-物理小区ID和同步信号PSS、SSS
- 【坑】Some projects cannot be imported because they already exist in the workspace
- 卷积神经网络中十大拍案叫绝的操作
- 识别浮点常量问题
- Android接口回调interfaceCallBack
- 所实施的保护措施
- 最后一波机会!!本周你最不能错过的互联网大会,VIP门票0元限时抢!
- 好的互联网产品,都先解决了用户的「焦虑感」
- 如何在App崩溃时执行一段代码
- 有环链表的问题解决思路
- Macfee与ESET哪个好?
- 20171009日记账流水(复盘)
- ios-播放音效的简单实现