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

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

Сообщение Anonymous »

Я проверил эту статью, но заметил изменения ответа в MainActivity.

Вот мой код для LoginRepo

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

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;
}
Вот мой код LoginViewModel

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

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);
}
}

Вот мой код для LoginActivity

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

 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();
}

}
});

}

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

onLoginClickМетод 
, используемый в LoginViewModel, использует LiveData.

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

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

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

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

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

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

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