如何解决Android RecyclerView NotifyDataSetChanged与LiveData
为我的ListAdapter
实例化RecyclerView
时,我呼叫:
viewModel.currentList.observe(viewLifecycleOwner){
adapter.submitList(it)
}
这是我在Android Sunflower项目中看到的作为将LiveData
提交到RecyclerView
的正确方法。这很好,当我将项目添加到数据库时,它们会在RecyclerView
中进行更新。但是,如果我写
viewModel.currentList.observe(viewLifecycleOwner){
adapter.submitList(it)
adapter.notifyDataSetChanged()
}
然后我的适配器数据观察者总是落后。我打电话
adapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver(){
override fun onChanged() {
super.onChanged()
if (adapter.currentList.isEmpty()) {
empty_dataset_text_view.visibility = View.VISIBLE
} else {
empty_dataset_text_view.visibility = View.GONE
}
}
})
列表大小达到零后,empty_dataset_text_view
出现一个变化 ,同样,列表大小不为零后,它消失了一个变化。
很明显,观察者在提交it
之前正在运行代码,在这种情况下,LiveData
是从Room
查询的。我只想知道解决方法是什么:是否有办法“等待” LiveData的返回?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。