首页 > Android 回调函数 解析问题

Android 回调函数 解析问题

    大家先看看我的代码,Okhttp访问接口返回json 然后 解析回调的例子
    
     public static void get(String url, final CallBack callback) {
            final Request request = new Request.Builder().url(url).get().build();
            mOkhttpClient().newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    e.printStackTrace();
                    if(callback != null) {
                         callback.onError();
                    }
                }
    
                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    if (!response.isSuccessful()) {
                        if(callback != null) {
                            callback.onError();
                        }
                    }
                    final String result = response.body().string();
                    
                    if(callback != null) {
                        callback.onSuccess(String result);
                    }  
        }
        
public interface CallBack {

    void onSuccess(String result);

    void onError();
}

这样写我需要把json 字符串返回回来以后再解析 感觉很麻烦 ,

想实现以下这样的方式:
HttpRequest.get(url, new CallBack<Test>() {
    onSuccess(Test test);
    onError();
}

经过自己思考:修改回调函数:

 public interface CallBack<T> {

    void onSuccess(T result);

    void onError();
}

public static <T> void get(String url, final CallBack<T> callback) {
     Gson gson = new Gson();
     
     这时候就无法解析了  大家有没有好的实现思路,请教以下

}



已测试。 没问题。

public void get(ResultListener<T> listener){        
http.send(HttpMethod.POST, url, params, new    RequestCallBack<String>() {
        @Override
        public void onFailure(HttpException arg0, String arg1) {
            listener.onError(arg1);
        }

        @Override
        public void onSuccess(ResponseInfo<String> responseInfo) {
            T obj = parse(businessClass, responseInfo.result);
            listener.onSuccess(obj);
        }
    });
}

public static <T> T parse(Class<T> businessClass, String json) {
    Gson gson = new Gson();
    T obj = (T) gson.fromJson(json, businessClass);
    return obj;
}

    public interface ResultListener<T> {
    void onSuccess(T t);

    void onError(String msg);
}

e...这个问题啊 我没怎么看得懂你的意思,你是想解析json字符串,在哪儿解析不都一样吗?


不建议重复造轮子
用下面这个,类似的库还有好多
http://square.github.io/retrofit/


get方法在加一个T的class参数

get(String url, final CallBack<T> callback,Class<T> cls)

【热门文章】
【热门文章】