[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
    • 분류 전체보기 (81)
      • Android (58)
        • ADB (4)
        • Architecture (1)
        • Data (5)
        • Firebase (2)
        • Network & Connecting (4)
        • Security & Privacy (3)
        • UI (24)
        • 기타 (3)
        • 이슈 처리 (14)
      • Android Studio (5)
      • Git (3)
      • 작업 일지 (13)
  • 최근 글

  • 인기 글

  • 태그

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

    • GitHub
  • 블로그 메뉴

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

티스토리툴바