输入时自动将RecyclerView列表滚动到底部

时间:2017-08-06 17:41:48

标签: java android android-recyclerview

我想在加载活动后滚动到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()) ......没有结果。我该如何解决这个问题?

3 个答案:

答案 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);