防止RecyclerView在加载其他项目时更改位置
问题描述:
我有一个代表聊天列表的setStackFromEnd(true)
RecyclerView。我想在列表滚动到顶部时加载较旧的消息。我设法使用onScrollListener来做到这一点。防止RecyclerView在加载其他项目时更改位置
但是,当我将项目添加到适配器messages.addAll(0, aListWithNewMessages)
(消息是适配器的数据集),并调用notifyDataSetChanged()
,新的列表项目(如预期)的现有前出现,(用户想要体会不到的)移下来,我想静静地添加它们,以便用户不应该看到它。
所以我想如何解决这个问题是滚动列表以某种方式以前保存的位置。
我知道这不是一个错误或一个意外的行为,所以请帮忙整理一下。
谢谢
答
尝试更具体。而不是调用notifyDataSetChanged()
使用notifyItemRangeInserted
或类似的RecyclerView
方法。这将允许RecyclerView
知道该做什么并将提供更好的用户体验。
这是正确的解决方案。告诉RecyclerView插入项目的范围以避免滚动RecyclerView。 –