将新项目添加到RecyclerView的顶部

我正在programamticly添加一个项目到recyclerview位置0

public void addQuestion(Question question){ this.questionList.add(0, question); notifyItemInserted(0); } 

这工作得很好,项目确实出现在顶部的列表中但是用户必须向上滚动才能看到新项目。

是否有任何技巧如何项目出现在顶部并且recyclerview自动向上滚动?

那么你可以使用mRecyclerView.smoothScrollToPosition(int position)

例:

 public void addQuestion(Question question){ this.questionList.add(0, question); notifyItemInserted(0); mRecyclerView.smoothScrollToPosition(0); } 

更新:

如果你想让滚动到某个项目真的很顺利,你可以看看这个问题的答案

RecyclerView – 如何在某个位置平滑滚动到项目顶部?

是的,你可以这样做

 mRecyclerView.smoothScrollToPosition(0); 

尝试这个

 mRecyclerView.smoothScrollToPosition(0); 

如果我理解正确,你问题是你已经滚动到列表顶部,但插入时你必须再次滚动查看项目,你可以尝试我的方法来避免它。

根据我的经验,插入后滚动的方法有效,但animation看起来并不自然。

如果您真的想保存animation,可以尝试一种方法,帮助我完成项目:使用多types回收器。 在适配器的0位置显示第二种types的附加项目。 这个项目可以只是一个带有小填充,标题(如果需要)甚至是空视图的视图。 然后,notifyItemInserted(1),你会得到很好的插入animation。

注意:此方法可能会增加项目的复杂性,并需要有关多types回收站视图的知识。