일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ListAdapter DiffUtil
- getChangePayload
- ktor client
- map
- kotlin list
- 유튜브 요약
- 안드로이드
- android exoplayer
- doc2vec
- 유튜브
- list map
- android
- ktor api call
- DiffUtil.ItemCallback
- 시행착오
- video caching
- build with ai
- android custom view
- ListAdapter
- ChatGPT
- FastAPI
- Zsh
- 스피너
- android ktor
- exoplayer cache
- ExoPlayer
- Python
- llm
- kotlin collection
- AWS EC2
- Today
- Total
목록ListAdapter DiffUtil (3)
버튼 수집상

지난 글에서 ListAdapter DiffUtil 의 getChangePayload 활용법에 대해 적었다. [안드로이드] ListAdapter DiffUtil 제대로 쓰기 - 2 1편에서 ListAdapter에 submitList를 하면서 기존 리스트를 업데이트할 때 리스트 깊은 복사deep copy를 해야 하는 이유에 대해 적었다. 이번엔 ListAdapter DiffUtil의 각 함수를 자세히 알아보겠다. 샘플 코드 collectingbuttons.tistory.com 이제 DiffUtil을 활용해서 expand - collapse 되는 리스트 UI를 만들어보겠다. 임의로 만든 모의데이터 기반이라 도움이 될지는 모르겠다. 샘플 UI 구조 상위 카테고리 ▲ |_ 하위 카테고리 |_ 하위 카테고리 상위 ..

1편에서 ListAdapter에 submitList를 하면서 기존 리스트를 업데이트할 때 리스트 깊은 복사deep copy를 해야 하는 이유에 대해 적었다. 이번엔 ListAdapter DiffUtil의 각 함수를 자세히 알아보겠다. 샘플 코드 전체는 1편에 있다. DiffUtil.ItemCallback 에 구현해야하는 함수 2가지가 있다. areContentsTheSame : 리스트 요소의 객체 주소를 비교한다 areItemsTheSame : 리스트 요소의 필드값을 비교한다 함수 이름만 보면 하는 일이 반대가 돼야할 것 같은데 아무튼 그렇다. areItemsTheSame에서 변경사항을 감지하고 싶은 값을 비교해서 UI를 업데이트할 수 있다. 예제 데이터 SimpleObject의 isChecked 값을 ..

배경 리사이클러뷰에서 부분적으로 UI를 업데이트할 때 (ex: 찜하기) 업데이트한 리스트를 submitList()로 세팅해도 DiffUtil이 제대로 돌아가지 않는 경우가 있었다. 리스트 변경사항을 제대로 감지하는 경우를 알기 위해 샘플 프로젝트를 구성해봤다. 샘플 프로젝트 구조 리스트 아이템을 클릭하면 api를 변경된 index를 호출한 뒤 리스트에 반영. api의 결과로 새 리스트를 뿌리는 구조는 비효율적이라고 판단했다. 참고한 앱도 변경값만 리턴하고 있었다. 샘플 데이터 클래스 data class SimpleObject( var name : String, var isChecked : Boolean = false ) BaseActivity.kt abstract class BaseActivity(lay..