Как выставить MutableLiveData как LiveData?
Код ниже не работает.
SimpleMixerFragment.kt
private lateinit var binding: MixerSimpleFragmentBinding
private lateinit var viewModel: SimpleMixerViewModel
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate view and obtain an instance of the binding class
binding = DataBindingUtil.inflate(
inflater,
R.layout.mixer_simple_fragment,
container,
false
)
viewModel = ViewModelProvider(this).get(SimpleMixerViewModel::class.java)
binding.simpleMixerViewModel = viewModel
binding.lifecycleOwner = viewLifecycleOwner
return binding.root
}
SimpleMixerViewModel.kt
class SimpleMixerViewModel : ViewModel() {
private val _etDate = MutableLiveData<String>()
val etDate: LiveData<String>
get() = _etDate
}
mixer_simple_fragment.kt
<variable name="simpleMixerViewModel" type="....SimpleMixerViewModel" />
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etDate"
android:text="@{simpleMixerViewModel.etDate}"/>
Это работает вместо.
SimpleMixerViewModel.kt
class SimpleMixerViewModel : ViewModel() {
val etDate = MutableLiveData<String>()
}
mixer_simple_fragment. xml
<variable name="simpleMixerViewModel" type="....SimpleMixerViewModel" />
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etDate"
android:text="@={simpleMixerViewModel.etDate}"/>