在键盘打开时将项目添加到 RecyclerView 时向下滚动

Scroll down when adding item to RecyclerView while keyboard is open

当我添加一个新的列表项时,在键盘仍然打开的情况下,列表项出现在键盘后面,因此是不可见的。如何自动向下滚动它以使其可见?

请记住,我已经解决了以下问题:

最后剩下的问题是键盘已经打开。当我第一次打开键盘时它工作正常。当我点击 "send" 时,该项目被添加到键盘后面,当我希望它向上滚动时

  1. 我打"send message"

  2. 事情是这样的。它隐藏在键盘后面

将您的 LayoutManager 设置为反向布局,以使 RecyclerView 保持其相对于其底部边缘而不是顶部边缘的定位:

LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setReverseLayout(true);
myRecycler.setLayoutManager(layoutManager);

应该不再需要自动滚动到适配器的最后位置,因此,如果您以前有代码可以这样做,则应将其删除。

您还必须反转适配器中数据集的顺序以匹配您最初的顺序(如果您的数据最初是升序排序,那么您应该将其更改为降序)。 对于您的情况,您可能希望按降序时间排序,以使 RecyclerView 的底部按最新排列,最旧排列在顶部。

而且,如果您直接添加到适配器的数据集,您应该添加到适配器列表的开头:

myDataList.add(0, myNewItem); // Add to the beginning of the list shifting previous items over
notifyDataSetChanged(); // Notify the adapter to refresh