BaseMVPActivity代码
package com.bwie.myapplication.activity;
import android.app.Activity;
import android.os.Bundle;
/**
* Created by hp on 2017/12/5.
*/
public abstract class BaseMVPActivity<V,T extends BasePresenter<V>> extends Activity {
public T t;
public abstract T initPresenter();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
t = initPresenter();
}
@Override
protected void onResume() {
super.onResume();
t.attach((V) this);
}
@Override
protected void onDestroy() {
super.onDestroy();
t.detach();
}
}
package com.bwie.myapplication.activity;
/**
* Created by hp on 2017/12/5.
*/
public class BasePresenter<V> {
public V view;
public void attach(V v){
this.view = v;
}
public void detach(){
this.view = null;
}
}
IApplication代码
package com.bwie.myapplication.activity;
import android.app.Application;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
/**
* Created by hp on 2017/12/5.
*/
public class IApplication extends Application {
public static IInterface iInterface;
@Override
public void onCreate() {
super.onCreate();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://api.tianapi.com")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
iInterface = retrofit.create(IInterface.class);
}
}
IInterface
package com.bwie.myapplication.activity;
import com.bwie.myapplication.bean.Bean;
import java.util.Map;
import io.reactivex.Observable;
import retrofit2.http.FieldMap;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.QueryMap;
/**
* Created by hp on 2017/12/5.
*/
public interface IInterface {
@GET("/nba")
Observable<Bean> get(@QueryMap Map<String,String> map);
@POST("/nba")
Observable<Bean> post(@FieldMap Map<String,String> map);
}
LoginAcitivity代码
package com.bwie.myapplication.activity;
import android.os.Bundle;
import android.view.View;
import com.bwie.myapplication.R;
import com.bwie.myapplication.bean.Bean;
import com.bwie.myapplication.presenter.LoginPresenter;
import com.bwie.myapplication.view.LoginView;
/**
* Created by hp on 2017/12/5.
*/
public class LoginActivity extends BaseMVPActivity<LoginView,LoginPresenter> implements LoginView {
@Override
public LoginPresenter initPresenter() {
return new LoginPresenter();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
t.login("muhanxi","password");
}
});
}
@Override
public void onSuccess(Bean bean) {
System.out.println("===================" + bean.toString());
}
@Override
public void onFailure() {
}
}
Model层代码
package com.bwie.myapplication.model;
import com.bwie.myapplication.activity.IApplication;
import com.bwie.myapplication.bean.Bean;
import java.util.HashMap;
import java.util.Map;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
/**
* Created by hp on 2017/12/5.
*/
public class LoginModel {
public void getData(final LoginModelCallBack callBack){
Map<String,String> map = new HashMap<>();
map.put("key","71e58b5b2f930eaf1f937407acde08fe");
map.put("num","20");
IApplication.iInterface.get(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Bean>() {
@Override
public void accept(Bean bean) throws Exception {
callBack.onSuccess(bean);
}
});
}
}
Model接口代码
package com.bwie.myapplication.model;
import com.bwie.myapplication.bean.Bean;
/**
* Created by hp on 2017/12/5.
*/
public interface LoginModelCallBack {
public void onSuccess(Bean bean);
}
presenter层代码
package com.bwie.myapplication.presenter;
import com.bwie.myapplication.activity.BasePresenter;
import com.bwie.myapplication.bean.Bean;
import com.bwie.myapplication.model.LoginModel;
import com.bwie.myapplication.model.LoginModelCallBack;
import com.bwie.myapplication.view.LoginView;
/**
* Created by hp on 2017/12/5.
*/
public class LoginPresenter extends BasePresenter<LoginView> {
LoginModel model;
public LoginPresenter() {
this.model = new LoginModel();
}
public void login(String username,String password){
model.getData(new LoginModelCallBack() {
@Override
public void onSuccess(Bean bean) {
view.onSuccess(bean);
}
});
}
}
view层代码
package com.bwie.myapplication.view;
import com.bwie.myapplication.bean.Bean;
/**
* Created by hp on 2017/12/5.
*/
public interface LoginView {
public void onSuccess(Bean bean);
public void onFailure();
}