Данные MutableLiveData из Spinner возвращают null

177
16 сентября 2021, 00:50

Я использую паттерн MVVM и DataBinding в своём проекте. Передать значения в Spinner мне удалось, но вот получить из оттуда - проблема. Гуглил, но ни один способ мне не помог. Вот как я делаю:

  1. Установил атрибут android:selectedItemPosition="@={viewModel.position}" для Spinner
  2. Создал public static MutableLiveData position поле во ViewModel
  3. Создал геттер и сеттер для этого поля
  4. Создал InverseBindingAdapter

    @InverseBindingAdapter(attribute = "android:selectedItemPosition") 
    public MutableLiveData<Integer> SelectedItem(Spinner spinner) { 
        position.setValue(spinner.getSelectedItemPosition());
        return position;
    }
    

Данные обновляются (при перевороте устанавливаются предыдущие значения в Spinner), но не могу получить данные из LiveData: при дебаге видно, что данные с позицией поступают со Spinner, но position.getValue() возвращает null. Вот класс handler, где я пытаюсь получить данные:

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;
        }
    }
}
READ ALSO
как из url вырезать mail и токен на js без регулярки?

как из url вырезать mail и токен на js без регулярки?

например в переменную mail="gogglepost@gmailcom" и token="$23y$113$px/m3Gi54234dgdfd2m1

167
таймер обратного отсчета на ванила

таймер обратного отсчета на ванила

Мне нужен таймер обратного отсчета формата д-чч-мм-сс

141