Android MVP框架实例
时间: 2023-08-21 10:05:44 浏览: 95
好的,让我给您举一个 Android MVP 框架实例。
假设我们要开发一个简单的登录界面,包含一个用户名输入框、一个密码输入框和一个登录按钮。我们可以按照 MVP 框架的方式来组织代码。
首先,我们定义一个 View 接口,包含了用户界面的一些方法,例如显示错误信息、显示登录成功等。
```java
public interface LoginView {
void showProgress();
void hideProgress();
void setUsernameError();
void setPasswordError();
void navigateToHome();
}
```
然后,我们定义一个 Presenter 接口,包含了处理用户输入的一些方法,例如验证用户名密码、进行登录等。
```java
public interface LoginPresenter {
void validateCredentials(String username, String password);
void onDestroy();
}
```
接下来,我们实现 Presenter 接口,并在其中处理逻辑。
```java
public class LoginPresenterImpl implements LoginPresenter {
private LoginView view;
public LoginPresenterImpl(LoginView view) {
this.view = view;
}
@Override
public void validateCredentials(String username, String password) {
if (TextUtils.isEmpty(username)) {
view.setUsernameError();
return;
}
if (TextUtils.isEmpty(password)) {
view.setPasswordError();
return;
}
// 调用模型层的方法验证用户名密码
boolean isValid = UserModel.validateUser(username, password);
if (isValid) {
view.showProgress();
view.navigateToHome();
} else {
view.hideProgress();
view.setUsernameError();
view.setPasswordError();
}
}
@Override
public void onDestroy() {
view = null;
}
}
```
最后,我们实现 Activity 中的 View 接口,并将 Presenter 和 View 进行绑定。
```java
public class LoginActivity extends AppCompatActivity implements LoginView {
private EditText etUsername;
private EditText etPassword;
private Button btnLogin;
private ProgressBar progressBar;
private LoginPresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
etUsername = findViewById(R.id.et_username);
etPassword = findViewById(R.id.et_password);
btnLogin = findViewById(R.id.btn_login);
progressBar = findViewById(R.id.progress_bar);
presenter = new LoginPresenterImpl(this);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = etUsername.getText().toString();
String password = etPassword.getText().toString();
presenter.validateCredentials(username, password);
}
});
}
@Override
public void showProgress() {
progressBar.setVisibility(View.VISIBLE);
}
@Override
public void hideProgress() {
progressBar.setVisibility(View.GONE);
}
@Override
public void setUsernameError() {
etUsername.setError("用户名不能为空");
}
@Override
public void setPasswordError() {
etPassword.setError("密码不能为空");
}
@Override
public void navigateToHome() {
Intent intent = new Intent(this, HomeActivity.class);
startActivity(intent);
finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
presenter.onDestroy();
}
}
```
以上就是一个简单的 Android MVP 框架实例,其中 View 接口定义了用户界面的一些方法,Presenter 接口定义了处理用户输入的一些方法,Presenter 实现了 Presenter 接口中的方法并在其中处理逻辑,Activity 实现了 View 接口中的方法并将 Presenter 和 View 进行了绑定。通过这种方式,我们可以将不同层的代码分离开来,使得代码更加清晰、易于维护和扩展。
阅读全文