Я столкнулся с некоторыми проблемами с данными MediatorLiveData внутри фрагмента.
Например:
У меня есть View Model
:
class InfoPessoalViewModel : NavigationViewModel(){
//fields
val nameField = MutableLiveData<String>()
val formMediator = MediatorLiveData<Boolean>()
init {
formMediator.addSource(nameField){}
}
И я 'помещаю это имя в мой xml с помощью привязки данных
<EditText
android:id="@+id/name"
android:text="@{viewModel.nameField}"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName" />
Но наблюдатель не запускает мой фрагмент.
bindingView.apply {
lifecycleOwner = this@InfoFragment
viewModel = viewModel
}
viewModel.formMediator.observe(this, Observer {
Log.d("Mediator","Fired!")
})
Кто-нибудь знает, что я здесь не так делаю?
РЕДАКТИРОВАТЬ
Я перешел на двустороннюю привязку здесь
android:text="@={viewModel.nameField}"
Но ничего из этого еще не сработало
viewModel.nameField.observe(this, Observer {
Log.d("Livedata","Fired!")
})
viewModel.formMediator.observe(this, Observer {
Log.d("Livedata","Fired!")
})
РЕДАКТИРОВАТЬ 2
Я импортирую эту модель представления, например:
<data>
<variable
name="viewModel"
type="br.com.original.bank.sejaoriginal.steps.infopersonal.InfoPessoalViewModel" />
</data>
И связывающее представление внутри моего фрагмента:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
bindingView = DataBindingUtil.inflate(inflater,R.layout.fragment_info_pessoal,container,false)
return bindingView.root
}
РЕДАКТИРОВАТЬ 3
Итак, первоначальная проблема была с viewModel = viewModel
, с неправильной ссылкой внутри apply
метода.
Но проблема с MediatorLiveData
не вызывается до сих пор