Salah satu tips agar bisa mengandle button aktif dan disable dengan mudah adalah menggunakan live data namun ini bukan sembarangan live data karena dengan mediator kita bisa menampung atau mendeteksi variable ketika dia berubah, sehingga akan sangat mudah untuk mengaktifkan dan menonaktifkan sebuah button.
val checkStartShiftButtonStep1Validation =
MediatorLiveData<Boolean>().apply {
addSource(startShiftActualCash) {
value = getStartShiftStep1EnableState(startShiftActualCash,)
}
}
Code diatas adalah dimana kita akan mendaftarkan sebuah variable live data pada Mediator dimana returnnya adalah boolean dan ini akan langsung mempengaruhi si button.
private fun initObserve() {
with(viewModel) {
checkStartShiftButtonStep1Validation.observe(viewLifecycleOwner) {
binding.btnStartShift.isEnabled = it
}
}
}
Pada code tersebut sangat jelas ya, kita melakukan observe agar setiap perubahan pada value bisa mengikuti perubahan dari si buttonnya juga.
private fun getStartShiftStep1EnableState(
price: LiveData<String>,
): Boolean {
val priceValue = price.value
if (priceValue.isNullOrEmpty()) {
return false
}
return true
}
Sedangkan pada fungsi getStartShiftStep1EnableState(), disinilah pengecekan dilakukan sesuai dengan logika yang kita inginkan. Misalnya disini price hanya tidak boleh kosong dan Null, kamu bisa buat logika sesuai dengan kebutuhan kamu.
Gimana? Mudah ya? Semoga bermanfaat