用MVP实现简单的模拟登录功能

一.在View层

public interface ILoginView {
    void loginSuccess(String result);(登录成功)
    void loginFailer(String msg);(登录失败)
    void showLoading();
    void hideLoading();
}

二.写一个CallBack
   public interface ILoginCallBack {
     void onLoginSuccess(String reult);
  	 void onLoginFailer(String msg);
  	 }

三.Model层(处理数据)
public class LoginModel {

public void goLogin(final String name, final String password, final ILoginCallBack iLoginCallBack) {
    new AsyncTask<String, Void, String>() {
        @Override
        protected String doInBackground(String... strings) {
            SystemClock.sleep(2000);
            if (name.contains("wzj")) {
                return "登陆成功";
            } else {
                return "用户名或密码错误";
            }
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            if (s.contains("登陆成功")) {
                iLoginCallBack.onLoginSuccess("登陆成功");
            } else {
                iLoginCallBack.onLoginFailer("用户名或密码错误");
            }
        }
    }.execute();
  }
}

四.presenter层(处理model层和view层的交互)

public class LoginPresenter {

private LoginModel mModel;
private ILoginView mView;
private Handler mHandler = new Handler();

public LoginPresenter(ILoginView mView) {
    this.mView = mView;
    mModel = new LoginModel();
}

public void goLogin(String name,String pasword) {
    mView.showLoading();

    mModel.goLogin(name, pasword, new ILoginCallBack() {
        @Override
        public void onLoginSuccess(String reult) {
            mView.hideLoading();
            mView.loginSuccess(reult);
        }

        @Override
        public void onLoginFailer(String msg) {
           // mView.showLoading();
            mView.loginFailer(msg);
        }
    });
   }
}

五.在Mainactivity中

public class MainActivity extends AppCompatActivity 	
implements ILoginView {

private ProgressBar bar;
private LoginPresenter mpresenter;
private Button login_bt;
private EditText name;
private EditText pwd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //初始化控件
    name = (EditText) findViewById(R.id.name);
    pwd = (EditText) findViewById(R.id.pwd);
    login_bt = (Button) findViewById(R.id.login_bt);
    bar = (ProgressBar) findViewById(R.id.progressbar);

    mpresenter = new LoginPresenter(this);
    login_bt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (TextUtils.isEmpty(name.getText().toString().trim()) || TextUtils.isEmpty(pwd.getText().toString().trim())) {
                Toast.makeText(MainActivity.this, "用户名或密码不能为空",
                        Toast.LENGTH_SHORT).show();
            } else {
                mpresenter.goLogin(name.getText().toString().trim(), pwd.getText().toString().trim());
            }
        }
    });
}


@Override
public void loginSuccess(String result) {
    Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
    startActivity(new Intent(MainActivity.this, TwoActivity.class));

}

@Override
public void loginFailer(String msg) {
    hideLoading();
    Toast.makeText(MainActivity.this, "登录失败",
            Toast.LENGTH_SHORT).show();

}

@Override
public void showLoading() {
    bar.setVisibility(View.VISIBLE);

}

@Override
public void hideLoading() {
    bar.setVisibility(View.GONE);
    }
}

猜你喜欢

转载自blog.csdn.net/wzj_8899174/article/details/83867374