将firebase Recyclerview滚动到scrollview内,插入最后一个项目

时间:2019-03-08 04:01:51

标签: android firebase-realtime-database scrollview

我已经通过了多个解决方案来解决堆栈溢出问题,但是无法达到预期的结果。我有一个firebase recyclerview的评论部分。 firebase recyclerview与滚动视图一起存在,同时滚动布局的其他部分以及普通的firebase recyclerview。我设置了animation2->start(QAbstractAnimation::DeleteWhenStopped); ,以便滚动视图可以平滑滚动。现在,我能够成功滚动浏览布局,但是只有在我进入活动时才出现问题,该布局是从顶部显示的,这是我所不希望的。我希望从底部的最后一项显示firebase recyclerview或滚动视图。另外,我希望RecyclerView.setNestedScrollingEnabled(false)会在用户输入新评论时自动滚动到最后一项的位置

任何帮助将不胜感激

下面是我的代码

oncreate中用于初始化的代码

RecyclerView

firebase recyclerview内部的代码,我仅将相关部分添加到问题中。希望对您有帮助

        replyInDetailCommentsRecyclerView = findViewById(R.id.replyInDetailCommentsRecyclerView);
    linearLayoutManager1 = new LinearLayoutManager(this);
    replyInDetailCommentsRecyclerView.setLayoutManager(linearLayoutManager1);
    replyInDetailCommentsRecyclerView.setNestedScrollingEnabled(false);

我的XML代码

     adapter1.startListening();
    adapter1.notifyDataSetChanged();
    adapter1.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
        @Override
        public void onItemRangeInserted(int positionStart, int itemCount) {
            super.onItemRangeInserted(positionStart, itemCount);
            int friendlyMessageCount = adapter1.getItemCount();
            int lastVisiblePosition =
                    linearLayoutManager1.findLastCompletelyVisibleItemPosition();

            if (lastVisiblePosition == -1 ||
                    (positionStart >= (friendlyMessageCount - 1) &&
                            lastVisiblePosition == (positionStart - 1))) {
                linearLayoutManager1.scrollToPosition(positionStart);
            } else {
                replyInDetailCommentsRecyclerView.scrollToPosition(adapter1.getItemCount() - 1);
            }
        }
    });


    replyInDetailCommentsRecyclerView.setAdapter(adapter1);
    adapter1.notifyDataSetChanged();

1 个答案:

答案 0 :(得分:0)

您可以使用 NestedScrollView 代替 ScrollView