登陆MVP
public interface LoginInteractor {
interface OnLoginFinishedListener{
//用户名错误
void onUserNameError();
//密码错误
void onPassWordError();
//成功
void onSuccess();
}
//登录方法
void login(String userName, String passWord, OnLoginFinishedListener listener);
}
public class LoginInteractorImpl implements LoginInteractor {
@Override
public void login(String userName, String passWord, OnLoginFinishedListener listener) {
boolean error = false;
if (TextUtils.isEmpty(userName)) {
listener.onUserNameError();
error = true;
return;
}
if (TextUtils.isEmpty(passWord)) {
listener.onPassWordError();
error = true;
return;
}
if (!error) {
listener.onSuccess();
}
}
}
public interface LoginPresenter {
//获取登录信息
void validateCredentials(String userName, String passWord);
// 解绑
void onDetach();
}
public class LoginPresenterImpl implements LoginPresenter,LoginInteractor.OnLoginFinishedListener {
private LoginView loginView;
private LoginInteractor loginInteractor;
public LoginPresenterImpl(LoginView loginView) {
//初始化
this.loginView = loginView;
//实例化
this.loginInteractor = new LoginInteractorImpl();
}
@Override
public void validateCredentials(String userName, String passWord) {
loginInteractor.login(userName,passWord,this);
}
@Override
public void onSuccess() {
loginView.navigateToHome();
}
@Override
public void onUserNameError() {
loginView.setUserNameError();
}
@Override
public void onPassWordError() {
loginView.setPassWordError();
}
//解绑
@Override
public void onDetach() {
if(loginView != null)
loginView = null;
}
}
public class LoginActivity extends AppCompatActivity implements LoginView,View.OnClickListener {
private TextView etUname;
private TextView etPwd;
private LoginPresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
// findView
etUname = findViewById(R.id.et_userName);
etPwd = findViewById(R.id.et_password);
presenter = new LoginPresenterImpl(this);
//点击登录按钮
findViewById(R.id.btn_login).setOnClickListener(this);
}
@Override
public void onClick(View v) {
presenter.validateCredentials(etUname.getText().toString(),etPwd.getText().toString());
}
/**
* LoginView 里的方法
*/
@Override
public void setUserNameError() {
etUname.setError("用户名不能为空");
}
@Override
public void setPassWordError() {
etPwd.setError("密码不能为空");
}
@Override
public void navigateToHome() {
//跳到主界面
startActivity(new Intent(this,MainActivity.class));
finish();
}
}
public interface LoginView {
//用户名错误
void setUserNameError();
//密码错误
void setPassWordError();
//登录成功跳转
void navigateToHome();
}
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

浙公网安备 33010602011771号