1- Предоставьте изменяемый LiveData
или Observer
в вашем ViewModel
public MutableLiveData<Pair<String, String>> countryInfo = new MutableLiveData<>()
2- Передайте выбор пользователя в ViewModel
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
viewModel.countryInfo.setValue(new Pair(countries[position], codes[position]))
mCountrySelection.dismiss();
}
3- Запустите ваш вариант использования (бизнес-логика) в вашем ViewModel
(загрузка информации на сервер, сохранение ее в базе данных и т. Д.)
4 - Обновите View
, выставив еще один Observable
(в этомесли будет работать тот же countryInfo
) В MainActivity соблюдайте countryInfo
:
viewmodel.countryInfo.observe(this, new Observer<String>() {
@Override
public void onChanged(@Nullable final String newName) {
// Update the UI
PreferencesManager.setCountry(countries[position], codes[position]);
getSupportActionBar().setTitle(PreferencesManager.getCountry());
getSupportFragmentManager().beginTransaction();
.replace(R.id.a_main_frame, new ArticlesFragment(), "ArticlesFragment");
.commit();
}
});
PS: лучше всего переместить эту строку в ViewModel , поскольку она содержит частьбизнес логики:
PreferencesManager.setCountry(countries[position], codes[position]);