diff --git a/app/src/main/java/com/wuxiaolong/androidmvpsample/mvp/main/MainPresenter.java b/app/src/main/java/com/wuxiaolong/androidmvpsample/mvp/main/MainPresenter.java index da4bb18..714c65b 100644 --- a/app/src/main/java/com/wuxiaolong/androidmvpsample/mvp/main/MainPresenter.java +++ b/app/src/main/java/com/wuxiaolong/androidmvpsample/mvp/main/MainPresenter.java @@ -27,10 +27,11 @@ public class MainPresenter extends BasePresenter { } @Override - public void onFailure(int code, String msg) { + public void onFailure(String msg) { mvpView.getDataFail(msg); } + @Override public void onFinish() { mvpView.hideLoading(); diff --git a/app/src/main/java/com/wuxiaolong/androidmvpsample/mvp/main/MainView.java b/app/src/main/java/com/wuxiaolong/androidmvpsample/mvp/main/MainView.java index 122fc00..4977aff 100644 --- a/app/src/main/java/com/wuxiaolong/androidmvpsample/mvp/main/MainView.java +++ b/app/src/main/java/com/wuxiaolong/androidmvpsample/mvp/main/MainView.java @@ -14,6 +14,7 @@ public interface MainView { void getDataFail(String msg); + void showLoading(); void hideLoading(); diff --git a/app/src/main/java/com/wuxiaolong/androidmvpsample/retrofit/ApiCallback.java b/app/src/main/java/com/wuxiaolong/androidmvpsample/retrofit/ApiCallback.java index 536b219..bd45a61 100644 --- a/app/src/main/java/com/wuxiaolong/androidmvpsample/retrofit/ApiCallback.java +++ b/app/src/main/java/com/wuxiaolong/androidmvpsample/retrofit/ApiCallback.java @@ -18,7 +18,7 @@ public abstract class ApiCallback extends Subscriber { public abstract void onSuccess(M model); - public abstract void onFailure(int code, String msg); + public abstract void onFailure(String msg); public abstract void onFinish(); @@ -38,9 +38,9 @@ public abstract class ApiCallback extends Subscriber { if (code == 502 || code == 404) { msg = "服务器异常,请稍后再试"; } - onFailure(code, msg); + onFailure(msg); } else { - onFailure(0, e.getMessage()); + onFailure(e.getMessage()); } onFinish(); } diff --git a/app/src/main/java/com/wuxiaolong/androidmvpsample/retrofit/RetrofitCallback.java b/app/src/main/java/com/wuxiaolong/androidmvpsample/retrofit/RetrofitCallback.java new file mode 100644 index 0000000..cba5268 --- /dev/null +++ b/app/src/main/java/com/wuxiaolong/androidmvpsample/retrofit/RetrofitCallback.java @@ -0,0 +1,41 @@ +package com.wuxiaolong.androidmvpsample.retrofit; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +/** + * Created by WuXiaolong + * on 2016/9/22. + * github:https://github.com/WuXiaolong/ + * weibo:http://weibo.com/u/2175011601 + * 微信公众号:吴小龙同学 + * 个人博客:http://wuxiaolong.me/ + */ + +public abstract class RetrofitCallback implements Callback { + + public abstract void onSuccess(M model); + + public abstract void onFailure(int code, String msg); + + public abstract void onThrowable(Throwable t); + + public abstract void onFinish(); + + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + onSuccess(response.body()); + } else { + onFailure(response.code(), response.errorBody().toString()); + } + onFinish(); + } + + @Override + public void onFailure(Call call, Throwable t) { + onThrowable(t); + onFinish(); + } +} diff --git a/app/src/main/java/com/wuxiaolong/androidmvpsample/ui/MainActivity.java b/app/src/main/java/com/wuxiaolong/androidmvpsample/ui/MainActivity.java index a428572..1d81d81 100644 --- a/app/src/main/java/com/wuxiaolong/androidmvpsample/ui/MainActivity.java +++ b/app/src/main/java/com/wuxiaolong/androidmvpsample/ui/MainActivity.java @@ -10,13 +10,12 @@ import com.wuxiaolong.androidmvpsample.mvp.main.MainPresenter; import com.wuxiaolong.androidmvpsample.mvp.main.MainView; import com.wuxiaolong.androidmvpsample.mvp.other.MvpActivity; import com.wuxiaolong.androidmvpsample.retrofit.ApiCallback; +import com.wuxiaolong.androidmvpsample.retrofit.RetrofitCallback; import butterknife.Bind; import butterknife.ButterKnife; import butterknife.OnClick; import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; /** * 由Activity/Fragment实现View里方法,包含一个Presenter的引用 @@ -59,6 +58,7 @@ public class MainActivity extends MvpActivity implements MainView } + @Override public void showLoading() { showProgressDialog(); @@ -89,16 +89,24 @@ public class MainActivity extends MvpActivity implements MainView private void loadDataByRetrofit() { showProgressDialog(); Call call = apiStores.loadDataByRetrofit("101190201"); - call.enqueue(new Callback() { + call.enqueue(new RetrofitCallback() { @Override - public void onResponse(Call call, Response response) { - dataSuccess(response.body()); - dismissProgressDialog(); + public void onSuccess(MainModel model) { + dataSuccess(model); } @Override - public void onFailure(Call call, Throwable t) { + public void onFailure(int code, String msg) { + toastShow(msg); + } + + @Override + public void onThrowable(Throwable t) { toastShow(t.getMessage()); + } + + @Override + public void onFinish() { dismissProgressDialog(); } }); @@ -116,7 +124,7 @@ public class MainActivity extends MvpActivity implements MainView } @Override - public void onFailure(int code, String msg) { + public void onFailure(String msg) { toastShow(msg); }