使用Recyclerview在Android聊天应用程序中自动滚动

时间:2019-05-13 13:04:09

标签: android-recyclerview

我正在通过socket.io创建聊天应用程序。它的工作完全正常。现在我想要的是,当用户在edittext中输入文本时,它应该到达通过此方法执行的结束位置。

myRecylerView.smoothScrollToPosition(AbcChatBoxAdapter.getItemCount() - 1);

我将此代码保留在editext的提交按钮上。现在,每次用户单击此按钮时,虽然它位于列表的底部,但显示从上到下滚动。我想要的是,当用户单击“提交”按钮时,聊天消息应停留在底部,而不像whatsapp一样滚动。

有没有办法做到这一点。

2 个答案:

答案 0 :(得分:0)

使用scrollToPosition而不是smoothScrollToPosition

答案 1 :(得分:0)

mAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
            @Override
            public void onItemRangeInserted(int positionStart, int itemCount) {
                super.onItemRangeInserted(positionStart, itemCount);
                int myMessageCount = mAdapter.getItemCount();
                int lastVisiblePosition =
                        mLinearLayoutManager.findLastCompletelyVisibleItemPosition();
                // If the recycler view is initially being loaded or the
                // user is at the bottom of the list, scroll to the bottom
                // of the list to show the newly added message.
                if (lastVisiblePosition == -1 ||
                        (positionStart >= (myMessageCount - 1) &&
                                lastVisiblePosition == (positionStart - 1))) {
                    mBinding.messageRecyclerView.scrollToPosition(positionStart);
                }
            }
        });

mBinding.messageRecyclerView或mMessageRecyclerView(mMessageRecyclerView = findViewById(R.id.rv);)