BindingAdapter 中的 LiveData Observer
LiveData Observer in BindingAdapter
可以通过 LiveData
观察者调用进行 BindingAdapter
吗?
我需要 LifecycleOwner
来调用 LiveData Observer。
绑定适配器:
@BindingAdapter("app:progressBarObserver")
fun setProgressBarObserver(progressBar: ProgressBar, observer: MutableLiveData<Boolean>) {
observer.observe({lifecycle_here}, Observer {
if (it) {
progressBar.visibility = View.VISIBLE
} else {
progressBar.visibility = View.GONE
}
})
}
{lifecycle_here}
表明我需要在 LiveData 观察调用上放置一个 LifecycleOwner。
当您将 BindingAdapter
与 LiveData
一起使用时,您不会将 LiveData
作为参数。直接输入livedata的类型就可以了
@BindingAdapter("app:progressBarObserver")
fun setProgressBarObserver(progressBar: ProgressBar, isVisible: Boolean) {
if (isVisible) {
progressBar.visibility = View.VISIBLE
} else {
progressBar.visibility = View.GONE
}
}
layout_my.xml
<ProgressBar
...
app:progressBarObserver=@{viewModel.progressBarVisibility}
...
MyViewModel.kt
class MyViewModel {
...
val progressBarVisibility = MutableLiveData<Boolean>(true)
...
}
可以通过 LiveData
观察者调用进行 BindingAdapter
吗?
我需要 LifecycleOwner
来调用 LiveData Observer。
绑定适配器:
@BindingAdapter("app:progressBarObserver")
fun setProgressBarObserver(progressBar: ProgressBar, observer: MutableLiveData<Boolean>) {
observer.observe({lifecycle_here}, Observer {
if (it) {
progressBar.visibility = View.VISIBLE
} else {
progressBar.visibility = View.GONE
}
})
}
{lifecycle_here}
表明我需要在 LiveData 观察调用上放置一个 LifecycleOwner。
当您将 BindingAdapter
与 LiveData
一起使用时,您不会将 LiveData
作为参数。直接输入livedata的类型就可以了
@BindingAdapter("app:progressBarObserver")
fun setProgressBarObserver(progressBar: ProgressBar, isVisible: Boolean) {
if (isVisible) {
progressBar.visibility = View.VISIBLE
} else {
progressBar.visibility = View.GONE
}
}
layout_my.xml
<ProgressBar
...
app:progressBarObserver=@{viewModel.progressBarVisibility}
...
MyViewModel.kt
class MyViewModel {
...
val progressBarVisibility = MutableLiveData<Boolean>(true)
...
}