Paging3는 PagingData를 PagingDataAdapter의 submitData로 전달하여 리스트를 표시한다.
만약 리스트에 표시할 데이터가 없는 경우 초기 화면을 표시해야 하지만,
데이터가 없어도 PagingData는 null이나 empty로 내려오지 않는다.
이럴 때 PagingDataAdapter의 addLoadStateListener를 사용하면 데이터가 없을 때 처리를 할 수 있다.
addLoadStateListener는 CombinedLoadState로 현재 PagingData의 로딩 상태를 관찰한다.
CombinedLoadStates의 LoadState 정보는 다음과 같다.(참고)
• append
목록의 끝에서 데이터를 로드하는 상태
• prepend
목록의 시작 부분에서 데이터를 로드하는 상태
• refresh
PagingData를 처음 로드할 때의 로드
여기서 append의 endOfPaginationReached를 사용한다.
endOfPaginationReached는 추가 데이터를 계속 요청해야 하는지 중지해야 하는지 Boolean 값으로 알려준다.
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
}
}
}
'Android > Paging3' 카테고리의 다른 글
[Android] Paging3에서 아이템 삭제하기 + 로딩 처리 (0) | 2023.01.19 |
---|---|
[Android] Paging3, 스크롤 시 로딩 화면 추가하기 (0) | 2023.01.18 |
[Android] Paging3 + Room + Flow 사용하기 (1) | 2023.01.16 |
댓글