Android/Paging3

[Android] Paging3에서 데이터 없을 때 처리하기

O_Gyong 2023. 2. 20.

Paging3는 PagingData를 PagingDataAdapter의 submitData로 전달하여 리스트를 표시한다.

 

만약 리스트에 표시할 데이터가 없는 경우 초기 화면을 표시해야 하지만,

데이터가 없어도 PagingData는 null이나 empty로 내려오지 않는다.

 

이럴 때 PagingDataAdapter의 addLoadStateListener를 사용하면 데이터가 없을 때 처리를 할 수 있다.

addLoadStateListener는 CombinedLoadState로 현재 PagingData의 로딩 상태를 관찰한다.

 

CombinedLoadStates의 LoadState 정보는 다음과 같다.(참고)

• append
  목록의 끝에서 데이터를 로드하는 상태

• prepend
  목록의 시작 부분에서 데이터를 로드하는 상태
• refresh
  PagingData를 처음 로드할 때의 로드 

여기서 append의 endOfPaginationReached를 사용한다.

endOfPaginationReached는 추가 데이터를 계속 요청해야 하는지 중지해야 하는지 Boolean 값으로 알려준다.

endOfPaginationReached 참고 자료


mAdapter.addLoadStateListener { combinedLoadStates ->
    if(combinedLoadStates.append.endOfPaginationReached) {
    	// 아이템 수가 1보다 작으면 Empty View 보이도록 처리
        if(mAdapter.itemCount < 1) {
            mBinding.tvListEmpty.visibility = View.VISIBLE
        }else {
        // 아이템 수가 1보다 크면 Empty View 안보이도록 처리
            mBinding.tvListEmpty.visibility = View.GONE
        }
    }
}

(왼쪽) 코드 적용 전 / (오른쪽) 코드 적용 후

댓글