【发布时间】:2020-02-10 16:59:33
【问题描述】:
主活动
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activityMainBinding = DataBindingUtil.setContentView(this,
R.layout.activity_main)
mainViewModel = ViewModelProviders.of(
this@MainActivity,
mainViewModelFactory
)[MainViewModel::class.java]
activityMainBinding.viewmodel = mainViewModel
activityMainBinding.lifecycleOwner = this
mainViewModel.fetchBusinessList()
mainViewModel.businessList.observe(this, Observer { items ->
run {
mainViewModel.isLoading.value = false
}
})
主视图模型
class MainViewModel(val repository: MainActivityRepo) : ViewModel() {
val isLoading: MutableLiveData<Boolean> = MutableLiveData()
lateinit var businessList: LiveData<List<Content>>
fun fetchBusinessList() {
isLoading.value = true
businessList = repository.getBusinessList()
}
布局
<androidx.core.widget.ContentLoadingProgressBar
android:id="@+id/clp_fetching"
style="@style/Widget.AppCompat.ProgressBar"
android:layout_width="40dp"
android:layout_height="40dp"
android:visibility="@{viewmodel.isLoading?View.VISIBLE:View.GONE}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
我尝试过setValue、postValue,还添加了LifeCycleOwner,它不会影响可见性为false。
【问题讨论】:
-
我在您的问题中看不到任何
postValue或可见性相关代码 -
兄弟请看最后一行,我已经尝试了每个选项,设置为 true 工作正常。 @VivekMishra
-
VIew.GONE。我看到 I in view 出现大写错误 -
更正了,这是复制问题时的打字错误,这不是问题所在。 @VivekMishra
-
尝试调用 executePendingBinding()
标签: android data-binding android-livedata android-mvvm