我的适配器中有以下代码:
private val items: MutableList<T>
open fun setItems(items: List<T>?) {
this.items.clear()
if (items != null)
this.items.addAll(items)
notifyDataSetChanged()
}
当第一次显示相应的RecyclerView时,它充满了我从网络获得的数据中的视图,符合预期。当我从网络请求新数据时,我使回收者视图的可见性=消失并请求数据。当我获得新的网络数据并使用上面的setItems()更新适配器时,将再次显示回收站视图。问题是,尽管屏幕已按预期用新视图更新,但在显示新视图之前,我得到一个简短的“闪光”,显示旧视图。我可以通过在setItems之前调用recyclerView.removeAllViews()来修复它,但是有更好的方法来处理它吗?我不确定这里的根本原因是什么,我唯一的想法是notifyDataSetChanged更新太慢。
之所以这样,是因为您在调用notifyDataSetChanged()
之前将RecyclerView的可见性设置为消失。根据notifyDataSetChanged()
上的文档: