简体   繁体   中英

How to reverse recyclerView layout like a chat app with FirebaseUI FirestoreRecyclerAdapter?

I am using FirestoreRecyclerAdapter to make a chat app in java. When adding a message it works fine but I want messages to show at bottom not on top. I tried

layoutManager.setReverseLayout(true);

layoutManager.setStackFromEnd(true);

Now it reverse it's position which is good but it's not automatically scrolling to bottom position. And when I add a new message I need to scroll manually to see it.

The best way to do it is use the following piece snippet whenever there is a new message. You can use a snapshot listener for that

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

Recyclerview automatically scroll to bottom after adding below lines

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

                }
            });
        }
    }, 1000);

above solution will not work if parent layout is horizontal scroll.

Other solution is

 recyclerView.scrollToPosition(0);

Both line of code work for me. you can use any of the solution

This is what I used:

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

Also use

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

in adapter

I was using

recyclerView.scrollToPosition (0);

in onCreate and adapter was starting in onStart. Now it's working

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM