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步写在了一起,这
样赋值起来简单通俗一点。




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 开车给豪车撞了怎么办 喝酒开车撞伤人怎么办 被车撞伤了怎么办 开车撞人骨折了怎么办 开车撞人后住院怎么办 骑车撞到小孩怎么办 开庭不通知家属怎么办 撞人后对方起诉怎么办 驾驶证被别人盗用怎么办 驾照分数扣完了怎么办 驾照分被盗扣怎么办 驾驶证分数不够扣怎么办 驾驶证分数扣完了怎么办 驾驶证分被骗了怎么办 自驾游穷游睡车上洗衣服怎么办 考生密码忘了怎么办 中国公民在菲律宾遇害怎么办 鞋有胶皮味怎么办 pvc下水管渗漏水怎么办 5s主板漏电怎么办 飞机转机延误了怎么办 家里有小丑雕像怎么办 巴黎被抢了怎么办 博彩公司压护照怎么办 跑马拉松手机怎么办 高跟鞋绒面掉皮怎么办 白裤子透短裤怎么办 崖柏珠子脏了怎么办 唱歌总是气息不足怎么办 幻影wifi闪退怎么办 镇魔曲转职后装备怎么办 起诉离婚对方不同意怎么办 后宫无人岛掉血了怎么办 老公不同意离婚该怎么办 爸妈闹离婚我该怎么办 爸妈闹离婚了我怎么办 苹果迅雷链接打不开怎么办 眼睛有灼烧感怎么办 爸妈关系不好怎么办 眼睛下面辣到了怎么办 老公隐瞒妻子欠下巨债怎么办