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

2023. 2. 20. 17:13·Android/UI
반응형

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
        }
    }
}

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

반응형

'Android > UI' 카테고리의 다른 글

[Android][Compose] Material2→Material3의 Typography  (0) 2023.05.26
[Android] SplashScreen 사용하기  (0) 2023.04.16
[Android] Glide, 모서리 둥글게 처리하기  (0) 2023.02.06
[Android] Paging3에서 아이템 삭제하기 + 로딩 처리  (0) 2023.01.19
[Android] Paging3, 스크롤 시 로딩 화면 추가하기  (0) 2023.01.18
'Android/UI' 카테고리의 다른 글
  • [Android][Compose] Material2→Material3의 Typography
  • [Android] SplashScreen 사용하기
  • [Android] Glide, 모서리 둥글게 처리하기
  • [Android] Paging3에서 아이템 삭제하기 + 로딩 처리
O_Gyong
O_Gyong
안드로이드 기술 정리
  • O_Gyong
    O_Gyong's TECH
    O_Gyong
    • 분류 전체보기 (84) N
      • Android (60)
        • ADB (4)
        • Architecture (1)
        • Data (5)
        • Firebase (2)
        • Network & Connecting (4)
        • Security & Privacy (3)
        • UI (24)
        • 기타 (3)
        • 이슈 처리 (14)
      • Android Studio (5)
      • Git (3)
      • 작업 일지 (16) N
  • 최근 글

  • 인기 글

  • 태그

    paging
    BLE
    Bluetooth
    issue
    firebase
    hilt
    recyclerview
    해상도
    Room
    ADB
    compose
    SharedPreferences
    webview
    MQTT
    loading
    Android
    CalendarView
    Andoird
    Paging3
    flow
    Kotlin
    CameraX
    github
    kizitonwose
    TabLayout
    GIT
    Pagination
    in-app update
    Android Studio
    Navigation
  • 링크

    • GitHub
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • hELLO· Designed By정상우.v4.10.4
O_Gyong
[Android] Paging3에서 데이터 없을 때 처리하기
상단으로

티스토리툴바