Android ListAdapter submitList not refreshing

2024. 4. 8. 00:30·Dev experience/Android
728x90
반응형

문제의 발단

최근 프로젝트에서 요즘 많이 쓰이는 ListAdapter(feat.DiffUtil)을 사용해보게 되었다.

나는 멤버변수로 MutableList를 가지고 있었고,

해당 리스트를 add, remove로 수정하고 submitList의 파라미터로 전달했다.

 

그런데 RecyclerView가 새로고침되지 않았다.

 

발생 원인

ListAdapter에게 submitList로 리스트를 전달하면

ListAdapter 내부의 AsyncListDiffer 멤버변수의 submitList를 호출한다.

 

AsyncListDiffer.submitList method 일부

 

해당 메소드는 멤버로 이전에 전달받은 list를 가지고 있고,

기존 멤버변수와 전달받은 파라미터의 list를 비교한다.

 

만약 두 리스트가 같다면 함수를 리턴한다.

(여기서 같다는 의미는 메모리 주소가 같다는 것을 의미한다.

AsyncListDiffer.java가 ==을 통해 비교하고 있기 때문이다.)

 

해결

submitList 파라미터에 전달할 리스트를 새로 만들어 전달한다.

 

myMutableList.toMutableList()

와 같이 말이다.

 

혹자는 '이게 무슨 코드냐' 라고 물어볼 수 있지만, toMutableList 메소드는 Collection interface에도 사용할 수 있고

이는 새로운 객체를 생성해 리턴해준다.

Collection.toMutableList method

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Dev experience > Android' 카테고리의 다른 글

Android APK Decompile(Proguard 적용 확인)  (0) 2024.06.12
Android UDP 통신해보기 in Kotlin  (0) 2024.04.20
Android Selector 사용 시 주의사항  (1) 2024.04.06
Android Change TextField Cursor Color  (0) 2024.03.13
Android UrlQuerySanitizer getValue error  (0) 2024.02.06
'Dev experience/Android' 카테고리의 다른 글
  • Android APK Decompile(Proguard 적용 확인)
  • Android UDP 통신해보기 in Kotlin
  • Android Selector 사용 시 주의사항
  • Android Change TextField Cursor Color
BonusTrack02.dev
BonusTrack02.dev
공부, 일상
  • BonusTrack02.dev
    BonusTrack02.dev
    BonusTrack02.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • Dev experience (88)
        • Android (87)
        • Kotlin (1)
      • Study (68)
        • Kotlin (32)
        • Swift (17)
        • Java (19)
      • 프로그래머스 (68)
      • 주저리주저리 (21)
        • 카페 (5)
        • 음식점 (4)
        • 컨퍼런스 (1)
        • 팝업스토어 (4)
        • 전시회 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Observer
    viewModelScope
    LiveData
    PCCE
    aac
    suspend
    jetpack
    자바
    Java
    배열
    MVVM
    room
    CodeLab
    오블완
    getNumericValue
    SWIFT
    databinding
    코틀린
    안드로이드
    프로그래머스
    스위프트
    programmers
    코루틴
    coroutines
    android
    Material
    ios
    ViewModel
    Kotlin
    티스토리챌린지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BonusTrack02.dev
Android ListAdapter submitList not refreshing
상단으로

티스토리툴바