当我使用新项目更新Android RecyclerView时,在新视图覆盖它们之前会短暂显示旧视图

问题描述 投票:0回答:1

我的适配器中有以下代码:

   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更新太慢。

android android-recyclerview notifydatasetchanged
1个回答
0
投票

之所以这样,是因为您在调用notifyDataSetChanged()之前将RecyclerView的可见性设置为消失。根据notifyDataSetChanged()上的文档:

© www.soinside.com 2019 - 2024. All rights reserved.