Adnroid DataBinding и MutableLiveData
Добавлено: 17 окт 2019, 07:52
Я использую паттерн MVVM и DataBinding в своём проекте. Передать значения в Spinner мне удалось, но вот получить из оттуда - проблема. Гуглил, но ни один способ мне не помог. Вот как я делаю:
Данные обновляются (при перевороте устанавливаются предыдущие значения в Spinner), но не могу получить данные из LiveData: при дебаге видно, что данные с позицией поступают со Spinner, но position.getValue() возвращает null. Вот класс handler, где я пытаюсь получить данные:
Подскажите, как сделать это правильно? Бьюсь уже второй день.
- Установил атрибут android:selectedItemPosition="@={viewModel.position}" для Spinner
- Создал
Код: Выделить всё
public static MutableLiveData<Integer> position = new MutableLiveData<>();
поле во ViewModel
- Создал геттер и сеттер для этого поля
- Создал InverseBindingAdapter
Код: Выделить всё
@InverseBindingAdapter(attribute = "android:selectedItemPosition")
public MutableLiveData<Integer> SelectedItem(Spinner spinner) {
position.setValue(spinner.getSelectedItemPosition());
return position;
}Код: Выделить всё
public static class DetailToStockActivityHandler {
Intent intent;
public void onClick(View view) {
switch (view.getId()) {
case R.id.btSave:
Toast.makeText(view.getContext(), getPosition().getValue(), Toast.LENGTH_LONG).show();
break;
case R.id.btCancel:
view.getContext().startActivity(new Intent(view.getContext(), MenuActivity.class));
break;
default:
break;
}
}
}