//首先写一个封装的User类
public class User {
private String username;
private String password;
public User(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
//定义一个Model的接口
public interface Imodel {
/**
* 登录
*
* @param user
* @return 约定返回"true"为登录成功,其他为登录失败的错误信息
*/
String login(User user);
}
//定义一个VIew的接口
public interface Iview {
/**
* 登录成功
*/
void onLoginSuccess();
/**
* 登录失败
*
* @param error
*/
void onLoginFailed(String error);
}
//用Model类来实现接口
public class UserModel implements Imodel {
@Override
public String login(User user) {
boolean networkError = false; //网络是否异常
try {
Thread.sleep(2000);//模拟网络连接
if (networkError) {
return "网络异常";
} else if ("zhangchaofei".equals(user.getUsername()) && "123456".equals(user.getPassword())) {
return "true";
} else {
return "账号或密码错误";
}
} catch (InterruptedException e) {
e.printStackTrace();
return e.getMessage();
}
}}
//定义一个Presenter类进行M和V交互
public class UserPresenter {
private final Iview iview;
private final UserModel userModel;
public UserPresenter(Iview iview) {
this.iview=iview;
this.userModel=new UserModel();
}
/**
* 登录
*
* @param user
*/
public void login(final User user) {
new Thread() {
@Override
public void run() {
final String res = userModel.login(user);
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
if ("true".equals(res)) {
iview.onLoginSuccess();
} else {
iview.onLoginFailed(res);
}
}
});
}
}.start();
}
}
//最后在MainAvtivity实现
public class MainActivity extends AppCompatActivity implements Iview{
private UserPresenter userPresenter;
private EditText etUserName;
private EditText etPassword;
private ProgressDialog loginProgreess;
private Button login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etUserName= (EditText) findViewById(R.id.editText);
etPassword= (EditText) findViewById(R.id.editText2);
login= (Button) findViewById(R.id.button);
userPresenter=new UserPresenter(this);
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String username = etUserName.getText().toString().trim();
String password = etPassword.getText().toString().trim();
if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
Toast.makeText(getApplicationContext(), "账号或密码不能为空", Toast.LENGTH_SHORT).show();
return;
}
loginProgreess = ProgressDialog.show(MainActivity.this, "登录", "正在登录...");
userPresenter.login(new User(username, password));
}
});
}
@Override
public void onLoginSuccess() {
loginProgreess.dismiss();
Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onLoginFailed(String error) {
loginProgreess.dismiss();
Toast.makeText(getApplicationContext(), "登录失败:" + error, Toast.LENGTH_SHORT).show();
}
}