Двустороннее связывание данных должно упростить процесс. Вам нужно наблюдать только одну переменную из пользовательского интерфейса, которая является той же самой переменной, которая получает изменения.
Например, макет будет:
<EditText
android:id="@+id/id_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@={viewmodel.name}"/>
И в моей viewmodel:
val name= MutableLiveData<String>()
Однако здесь есть две проблемы:
1) AnОчевидно, что мы предоставляем MutableLiveData вместо LiveData, что не очень хорошая практика.
2) Более тонкий вариант: у меня не может быть проверки для значения, введенного пользователем, так как это значение присваивается строкедержите MutableLiveData прямо сейчас.
Есть ли обходной путь для этой проблемы?
(Я думал о InverseBindingAdapter, но мне пришлось бы переопределить поведение android: text.
Другой вариант - это чтобы MediatorLiveData наблюдал заMutabeLiveData, но это, кажется, много стандартного кода, плюс значение MutableLiveData в любом случае изменилось бы)
Если двустороннее связывание данных будет использоваться только в очень специфических сценариях, например, небольшие изменения, которые не связаны ссерверная часть и не нуждаются в проверке?