Можно ли использовать MutableLiveData с массивом объектов? - PullRequest
0 голосов
/ 29 января 2019

В приложении, над которым я работаю, есть фрагмент, который пользователь должен заполнить до 6 EditText.Каждая пара EditText представляет тип и описание адреса пользователя (как в «Квартире» в качестве Типа и «1201» в качестве описания).По данным бразильской почтовой службы, можно добавить до 3 дополнений.

По умолчанию я показываю одну пару EditText, которая представляет первое дополнение.Есть кнопка, позволяющая пользователю добавить еще два дополнения к адресу.

Я хочу использовать LiveData и DataBinding для обновления массива дополнений в моей ViewModel, но он не работает, и я понятия не имеюпочему.

Можно ли работать с массивами и MutableLiveData?

XML

<android.support.design.widget.TextInputLayout
    android:id="@+id/tipo1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/tipo1edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Tipo 1"
        android:text="@={viewModel.complementoList.getValues().get(0).descricao}" />

</android.support.design.widget.TextInputLayout>

ViewModel

private MutableLiveData<ArrayList<Complemento>> complementoList;

public MutableLiveData<ArrayList<Complemento>> getComplementoList() { 
    if (complementoList == null) {
        complementoList = new MutableLiveData<>();

        ArrayList<Complemento> arrayComplemento = new ArrayList<>();
        arrayComplemento.add(new Complemento());
        arrayComplemento.add(new Complemento());
        arrayComplemento.add(new Complemento());

        complementoList.setValue(arrayComplemento);
    }

    return complementoList;
}

Фрагмент

final Observer<ArrayList<Complemento>> complementoList = new Observer<ArrayList<Complemento>>() {
    @Override
    public void onChanged(@Nullable ArrayList<Complemento> complementos) {
        //update stuff here
    }
};
mViewModel.getComplementoList().observe(this, complementoList);
...