군침이 싹 도는 코딩

리사이클러뷰 페이징 처리 본문

Android

리사이클러뷰 페이징 처리

mugoori 2023. 2. 8. 12:20
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
    }

    @Override
    public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);

        // 맨 마지막 데이터가 화면에 보이면 네트워크 통해서 데이터를 추가로 받아와라
        int lastPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findLastVisibleItemPosition();
        int totalCount = recyclerView.getAdapter().getItemCount();

        // 스크롤을 데이터 맨 끝까지 한 상태.
        if ( lastPosition+1 == totalCount ) {
            // 네트워크 통해서 데이터를 받아오고 화면에 표시
            addNetworkData();

        }
    }
});

# 리사이클러뷰의 페이징 처리를 위해서 addOnScrollListener ( new RecyclerView.OnScrollListener () 함수를 쓰면

두개의 함수를 오버라이딩할 수 있다

이 두개의 함수중에 onScrolled를 오버라이딩해서 페이징 처리를 한다

페이징 처리를 할때 맨 마지막 인덱스와 총 인덱스를 알아야된다 

마지막 인덱스는 int lastPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findLastVisibleItemPosition();

총 인덱스는

int totalCount = recyclerView.getAdapter().getItemCount();

이 두개가 같으면 페이징  처리를 하면 된다