一.在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);
}
}