简体   繁体   中英

How to auto scroll up Recycler view in Android?

I have developed some chat application where i can send and received messages. But the problem is whenever i send or receive messages the recycler view is not scrolling to top so that messages gets diplayed above the keypad.

I have used the above mentioned recycler view android.support.v7.widget.RecyclerView .

On updating recyclerview try to run this code :

recyclerView.post(new Runnable() {
    @Override
    public void run() {
        // Call smooth scroll  
        recyclerView.smoothScrollToPosition(adapter.getItemCount() - 1);                                 
    }
});

I use the following code so that the scroll is automatic until the last position:

recyclerView.smoothScrollToPosition(adapter.getItemCount());

I implement to add a new item to the list.

Try the bellow method for auto scroll to your particular position.

adapter = new DeliveriesDateRecycleAdapter(getActivity(),sampleDatedate, position);
                recyclerviewDates.setAdapter(adapter);
                adapter.notifyDataSetChanged();
                recyclerviewDates.smoothScrollToPosition(position);

Note : position - the position of the list that you want to show.

Have you tried RecyclerView.srollTo(int x, int y) ?

Edit: Try RecyclerView.scrollTo(0, 0) directly after you have send or received the last message.

try with following method for auto scroll to any position....you can change argument of the "notifyItemChanged" method.

 public void printer(String message){
    block block=new block();
    block.details=message;

    blocks.add(block);

    blockAdapter.notifyItemChanged(0);
    recyclerView.scrollToPosition(blocks.size()-1);
   // recyclerView.scrollTo(blocks.size()-1,blocks.size());
}

I was using horizontal recycler view with linear layout manager,accepted solution didn't work for me

But below solution worked,

(recycler.layoutManager as? LinearLayoutManager)?.scrollToPositionWithOffset(position, 0)

If you want to take your user directly to the latest item without scroll animation then use this:

recyclerView.scrollToPosition(adapter.getItemCount()-1);

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