如何像使用firebaseui firestorerecycleradapter的聊天应用程序一样反转recyclerview布局?

vpfxa7rd  于 2021-07-06  发布在  Java
关注(0)|答案(3)|浏览(312)

我正在使用firestorerecycleradapter制作一个java聊天应用程序。当添加一条消息时,它可以正常工作,但我希望消息显示在底部而不是顶部。我试过了

layoutManager.setReverseLayout(true);

layoutManager.setStackFromEnd(true);

现在它反转它的位置,这是好的,但它不会自动滚动到底部的位置。当我添加一条新消息时,我需要手动滚动才能看到它。

ie3xauqp

ie3xauqp1#

添加以下行后,recyclerview自动滚动到底部

new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    recyclerView.smoothScrollToPosition(0);

                }
            });
        }
    }, 1000);

如果父布局是水平滚动,上述解决方案将不起作用。
另一个解决办法是

recyclerView.scrollToPosition(0);

两行代码都适合我。你可以用任何一种方法

oipij1gg

oipij1gg2#

最好的方法是在有新消息时使用下面的片段。您可以使用快照侦听器进行此操作

y = (Here you need to try 2 things. My coding laptop is not with me so I cannot test and tell but either 0 should work or the chatlist.size()-1);
layoutManager.scrollToPosition(y);
OR
layoutManager.smoothScrollToPosition(y);// I do not recommend this for chat apps since it will take time to go down if there are a lot of texts below the user
ecr0jaav

ecr0jaav3#

我用的是:

@Override
public void onStart() {
    super.onStart ();
    adapter.startListening();
    recyclerView.scrollToPosition (0);
}

同时使用

@Override
public void onDataChanged() {
    super.onDataChanged ();
    recyclerView1.smoothScrollToPosition (0);
}

输入适配器
我用的是

recyclerView.scrollToPosition (0);

在oncreate中,适配器正在onstart中启动。现在起作用了

相关问题