Skip to content

Instantly share code, notes, and snippets.

@DanielKnauf
Last active April 18, 2021 14:14
Show Gist options
  • Save DanielKnauf/3f638393f5df5a89189dcb66fea059af to your computer and use it in GitHub Desktop.
Save DanielKnauf/3f638393f5df5a89189dcb66fea059af to your computer and use it in GitHub Desktop.
MergerLiveData use case for medium article
/*
* before
*/
class ViewModel {
val nameInput = MutableLiveData("")
val ageInput = MutableLiveData(0)
}
<layout>
<data>
<variable
name="viewModel"
type="ViewModel" />
<import type="android.text.TextUtils" />
</data>
<ViewGroup .. >
..
<Button
..
android:enabled="@{!TextUtils.isEmpty(viewModel.nameInput) &amp;&amp; viewModel.ageInput >= 18}"
/>
</ViewGroup>
</layout>
/*
* after
*/
class ViewModel {
val nameInput = MutableLiveData("")
val ageInput = MutableLiveData(0)
val isButtonEnabled =
MergerLiveData.Two(
firstSource = nameInput,
secondSource = ageInput
) { name, age ->
name.isNotEmpty() && age >= 18
}
}
<layout>
<data>
<variable
name="viewModel"
type="ViewModel" />
</data>
<ViewGroup .. >
..
<Button
..
android:enabled="@{viewModel.isButtonEnabled}"
/>
</ViewGroup>
</layout>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment