防止RecyclerView在加载其他项目时更改位置

问题描述:

我有一个代表聊天列表的setStackFromEnd(true) RecyclerView。我想在列表滚动到顶部时加载较旧的消息。我设法使用onScrollListener来做到这一点。防止RecyclerView在加载其他项目时更改位置

但是,当我将项目添加到适配器messages.addAll(0, aListWithNewMessages)(消息是适配器的数据集),并调用notifyDataSetChanged(),新的列表项目(如预期)的现有前出现,(用户想要体会不到的)移下来,我想静静地添加它们,以便用户不应该看到它。

所以我想如何解决这个问题是滚动列表以某种方式以前保存的位置。

我知道这不是一个错误或一个意外的行为,所以请帮忙整理一下。

谢谢

尝试更具体。而不是调用notifyDataSetChanged()使用notifyItemRangeInserted或类似的RecyclerView方法。这将允许RecyclerView知道该做什么并将提供更好的用户体验。

+0

这是正确的解决方案。告诉RecyclerView插入项目的范围以避免滚动RecyclerView。 –