BindingAdapter中的LiveData观察器

时间:2019-07-25 19:17:50

标签: android android-lifecycle android-livedata

是否可以通过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。

1 个答案:

答案 0 :(得分:1)

BindingAdapterLiveData一起使用时,不会将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)
    ...
}