Пример входа в систему с использованием модернизации, MVVM, Livedata в AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Пример входа в систему с использованием модернизации, MVVM, Livedata в Android

Сообщение Anonymous »

Я проверил эту статью, но наблюдаю за изменениями ответа в MainActivity. < /p>

Вот мой код для loginrepo < /strong> < /p>

Код: Выделить всё

public MutableLiveData checkLogin(LoginRequestModel loginRequestModel) {
final MutableLiveData data = new MutableLiveData();
Map params = new HashMap();
params.put("email", loginRequestModel.getEmail());
params.put("password", loginRequestModel.getPassword());
apiService.checkLogin(params)
.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
if (response.isSuccessful()) {
data.setValue(response.body());
Log.i("Response ", response.body().getMessage());
}
}

@Override
public void onFailure(Call call, Throwable t) {
data.setValue(null);
}
});
return data;
}
< /code>

Вот мой код  loginViewModel < /strong> < /p>

public class LoginViewModel extends ViewModel {

public MutableLiveData emailAddress = new MutableLiveData();
public MutableLiveData password = new MutableLiveData();
Map params = new HashMap();
LoginRepo loginRepo;

private MutableLiveData loginResponseModelMutableLiveData;

public LiveData getUser() {
if (loginResponseModelMutableLiveData == null) {
loginResponseModelMutableLiveData = new MutableLiveData();
loginRepo = LoginRepo.getInstance();
}

return loginResponseModelMutableLiveData;
}

//This method is using Retrofit to get the JSON data from URL
private void checkLogin(LoginRequestModel loginRequestModel) {
loginResponseModelMutableLiveData = loginRepo.checkLogin(loginRequestModel);
}

public void onLoginClick(View view) {
LoginRequestModel loginRequestModel = new LoginRequestModel();
loginRequestModel.setEmail(emailAddress.getValue());
loginRequestModel.setPassword(password.getValue());
params.put("email", loginRequestModel.getEmail());
params.put("password", loginRequestModel.getPassword());
checkLogin(loginRequestModel);
}
< /code>

} < /p>

Вот мой код для  loginactivity < /strong> < /p>

 private LoginViewModel loginViewModel;
private ActivityMainBinding binding;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
loginViewModel = ViewModelProviders.of(this).get(LoginViewModel.class);
binding = DataBindingUtil.setContentView(LoginActivity.this, R.layout.activity_main);
binding.setLifecycleOwner(this);
binding.setLoginViewModel(loginViewModel);
loginViewModel.getUser().observe(this, new Observer() {
@Override
public void onChanged(@Nullable LoginResponseModel loginUser) {
if (loginUser != null) {
binding.lblEmailAnswer.setText(loginUser.getUser().getId());
Toast.makeText(getApplicationContext(), loginUser.getUser().getId(), Toast.LENGTH_SHORT).show();
}

}
});

}
< /code>

onLoginClick< /code> Метод, используемый в LoginViewModel, использует livedata. < /p>

Ответ, исходящий от API, в порядке. Но onchange () 
это не показано, как использовать Livedata, используя шаблон MVVM в простом примере входа в систему. Пожалуйста, помогите!

Подробнее здесь: https://stackoverflow.com/questions/560 ... in-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»