是否可以通过BindingAdapter
进行观察者调用来LiveData
?
我需要LifecycleOwner
才能致电LiveData Observer。
BindingAdapter:
@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并遵守Call。
答案 0 :(得分:1)
将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)
...
}