반응형
해당 소스 코드는 리사이클러 뷰의 스크롤의 설명을 위한 코드입니다.
어댑터 구성과, 자세한 리사이클러 뷰의 구현은 생략되었습니다.
자세한 사항은 아래의 포스팅에서 확인 가능합니다.
https://luvris2.tistory.com/275
리사이클러 뷰의 스크롤링 메소드
- onScrollStateChanged : 스크롤의 상태가 변경 되었을 경우 1번 실행, 앱을 간소화 할 때 사용
- onScrolled : 스크롤 될 때 실행, 즉 반응형으로 코드를 작성 할 수 있음
// 스크롤 관련 이벤트 리스너
rv.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);
// 실행 코드 작성
}
});
리사이클러 뷰의 스크롤이 마지막 일 경우 스크롤 기능 추가
- 전체 소스 코드
// 리사이클러뷰, 어댑터 객체 생성 및 설정
RecyclerView rv;
TestAdapter adapter;
rv = findViewById(R.id.rv);
rv.setHasFixedSize(true);
rv.setLayoutManager(new LinearLayoutManager(MainActivity.this));
// ...
// 데이터를 입력 후(예시:DataList) 어댑터 생성
adapter = new TestAdapter(MainActivity.this, DataList);
rv.setAdapter(adapter);
adapter.notifyDataSetChanged();
// 리스트가 마지막까지 스크롤 될 때 이벤트
rv.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) rv.getLayoutManager()).findLastCompletelyVisibleItemPosition();
// 리스트의 총 행의 갯수 확인
int totalCount = rv.getAdapter().getItemCount();
// 리스트의 마지막에 도달 할 경우, 인덱스(Position)는 0부터 시작이므로 +1
if ( lastPosition+1 == totalCount ) {
// 리스트의 마지막의 경우 실행 될 코드 작성
}
}
});
반응형