我想在加载活动后滚动到RecyclerView列表的底部。每次发送或接收消息时,我都需要滚动到底部才能阅读消息。如何配置它以在发送或接收消息时自动滚动?
这是我到目前为止的代码:
recyclerView = (RecyclerView) findViewById(R.id.chatWindow_rec);
recyclerView.setHasFixedSize(true);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(Adapter);
我尝试了StackFromEnd,recyclerview.ScrollToPosition(ListMessage.size())
......没有结果。我该如何解决这个问题?
答案 0 :(得分:0)
在代码中使用此行希望它能帮到你:
layoutManager.setReverseLayout(true);
答案 1 :(得分:0)
首先,您应该确保List<>在适配器中更新了一条新消息。
然后使用RecylcerView.smoothScrollToPosition(List.size())滚动到列表的底部。
或者,使用RecylcerView.smoothScrollToPosition(MessageListAdapter.getItemCount())
你应该使用第二个选项,因为getItemCount()是适配器的默认方法,只需记住覆盖它。
public static RecyclerView.LayoutManager createVerticalLayoutManager(Context context) {
LinearLayoutManager layoutManager = new LinearLayoutManager(context
, LinearLayoutManager.VERTICAL
, false);
return layoutManager;
}
并使您的RecyclerView的宽度和高度为match_parent。
在附加新消息时调用适配器上的更新
mMessageAdapter.notifyItemChanged(mMessageAdapter.getItemCount());
上面的代码行只是用指定的最新项目更新适配器。
答案 2 :(得分:0)
第1次写入函数以返回适配器中的项目数,然后将数据添加到适配器使用
recyclerView.smoothScrollToPosition(adapter.getCount()-1);