登陆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);

 

    }

 

}

 

posted @ 2018-08-13 08:30  失落的城市  阅读(125)  评论(0)    收藏  举报