Detect when RecyclerView reaches the bottom most position while scrolling Detect when RecyclerView reaches the bottom most position while scrolling android android

Detect when RecyclerView reaches the bottom most position while scrolling


there is also a simple way to do it

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {    @Override    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {        super.onScrollStateChanged(recyclerView, newState);        if (!recyclerView.canScrollVertically(1)) {            Toast.makeText(YourActivity.this, "Last", Toast.LENGTH_LONG).show();        }    }});

direction integers: -1 for up, 1 for down, 0 will always return false.


Use this code for avoiding repeated calls

    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {        @Override        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {            super.onScrollStateChanged(recyclerView, newState);            if (!recyclerView.canScrollVertically(1) && newState==RecyclerView.SCROLL_STATE_IDLE) {                Log.d("-----","end");                            }        }    });


Just implement a addOnScrollListener() on your recyclerview. Then inside the scroll listener implement the code below.

RecyclerView.OnScrollListener mScrollListener = new RecyclerView.OnScrollListener() {        @Override        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {            if (mIsLoading)                return;            int visibleItemCount = mLayoutManager.getChildCount();            int totalItemCount = mLayoutManager.getItemCount();            int pastVisibleItems = mLayoutManager.findFirstVisibleItemPosition();            if (pastVisibleItems + visibleItemCount >= totalItemCount) {                //End of list            }        }    };