MVPを使用して、私のビューとモデルをAndroidアプリケーションでデカップリングしています。ビジネスロジックの結果をモデルにフィードバックする方法を知る必要があります。例えば、ボタンがログインするために押された場合アンドロイドMVPのビューへのモデルフィードバックはどのようにする必要がありますか?
は、活動がbutterknifeに@OnClick
アノテーションを使って、このようになります:
@OnClick(R.id.login_button)
public void login() {
String email = mEmailEditText.getText().toString();
String password = mPasswordEditText.getText().toString();
LoginCredentials loginCredentials = new LoginCredentials(email, password);
mPresenter.loginWithEmail(loginCredentials);
}
プレゼンターが、その後検証し、リポジトリに要求するだろう:
public void loginWithEmail(LoginCredentials loginCredentials) {
boolean isEmailValid = AuthValidator.validateEmail(loginCredentials.getUsername());
boolean isPasswordValid = AuthValidator.validatePassword(loginCredentials.getPassword());
if(isEmailValid && isPasswordValid) repository.loginEmailUser(loginCredentials);
if (!isEmailValid) view.handleInvalidEmail();
if (!isPasswordValid) view.handleInvalidPassword();
}
を
リポジトリは、ビジネスロジックを実行します:
@Override
public void loginEmailUser(LoginCredentials loginCredentials) {
Call<Token> call = userServiceApi.loginInToken(loginCredentials);
call.enqueue(new Callback<Token>() {
@Override
public void onResponse(@NonNull Call<Token> call, @NonNull Response<Token> response) {
if (response.isSuccessful()) {
// handle successful login
} else {
// Handle unsuccessful login
}
}
@Override
public void onFailure(@NonNull Call<Token> call, @NonNull Throwable t) {
// Handle failed request
}
});
コメントでは// handle unsuccessful something
と表示されますが、ビューがこれらの結果を処理できるように、モデルへのフィードバックはビジネスロジックの結果をどのように表示しますか?
ありがとうございます。
いつものように...コールバック – Selvin
プレゼンターにあなたがプレゼンターに添付したプレゼンターを通して完了 –
これが何であるか分かっていれば、私は質問しませんでした。あなたは詳細を教えていただけますか? –