Вот мой код для 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;
}
Код: Выделить всё
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Метод Ответ, поступающий от API, в порядке. Но в onchange() не показано, как использовать LiveData с использованием шаблона MVVM в простом примере входа в систему. Пожалуйста, помогите!
Подробнее здесь: https://stackoverflow.com/questions/560 ... in-android
Мобильная версия