模拟登录实践mvp
1、LoginModel 数据处理操作类
public class LoginModel extends BaseModel {
public LoginModel(Context mContext) {
super(mContext);
}
public void logIn(String phone, String password, final OnFinishedListener listener) {
HttpService essenceService = initRetrofit().create(HttpService.class);
essenceService.login(phone, password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
listener.Fialed(new Exception(e));
}
@Override
public void onNext(String model) {
listener.onSuccess(model);
}
});
}
}
2、LogInPresenter与model层建立关系,对LoginModel 处理数据进行调用从而将请求的结果返回给view层
public class LogInPresenter extends BasePresenter<LoginModel> {
public LogInPresenter(Context mContext) {
super(mContext);
}
@Override
public LoginModel bindModel() {
return new LoginModel(getContext());
}
public void login(String phone, String pass) {
getModel().logIn(phone, pass, new OnFinishedListener() {
@Override
public void onSuccess(String result) {
getView().sucess(result);
}
@Override
public void Fialed(Throwable t) {
getView().showLoginFail(t);
}
});
}
}
3、LogInView是一个空接口,根据项目情况而定。
public interface LogInView extends MvpView {
}
LogInActivity最终在activity中进行调用p中的方法:
public class LogInActivity extends BaseActivity {
private LogInPresenter presenter;
@Override
protected MvpPresenter createPresenter() {
return presenter = new LogInPresenter(this);
}
@Override
public void initView() {
setContentView(R.layout.activity_log_in);
}
@Override
public void initData() {
presenter.login("123456789","123123");
}
@Override
public void initEvent() {
}
@Override
public void onClick(View v) {
}
@Override
public void sucess(String result) {
}
@Override
public void showLoginFail(Throwable t) {
}
}