RecyclerView notifydatasetchanged在Android中冻结UI几秒钟

时间:2017-08-03 10:37:32

标签: android android-recyclerview recycler-adapter

我有一个垂直RecyclerView,每个项目都有水平RecyclerView

当我更新RecyclerView UI Freeze几秒钟时。

更新代码:

public void setData(List<SectionList> data) {
        if (this.sectionListDetails != data) {
            this.sectionListDetails = data;
            notifyDataSetChanged();
        }
    }

1 个答案:

答案 0 :(得分:2)

RecyclerView中使用RecyclerView会导致处理密集并导致屏幕上的视图延迟呈现。此外,两个适配器代码的计算兼容性与Android框架如何执行它有关。但我认为不是调用notifyDataSetChanged()(重新渲染显示的项目以及每一行中显然处理密集的嵌套水平适配器),而是尝试使用以下方法来帮助减少不必要的处理

notifyItemChanged(int)
notifyItemInserted(int)
notifyItemRemoved(int)
notifyItemRangeChanged(int, int)
notifyItemRangeInserted(int, int)
notifyItemRangeRemoved(int, int)

使用它可以对特定项目进行操作。 Check this link for more