이번 챌린지반 과제로 리스트 어댑터를 이용하여 이미지검색을 구현하는 과제가있었는데
그전에 개념을 잘 몰랐기때문에
https://www.youtube.com/watch?v=zNGVicOZ2ew&t=662s
해당 영상을 보고 리스트뷰에대해 공부하게되었고, 예제도 따라했다.
영상을보고 내가 정리한 개념은 다음과 같다.
DiffUtil - 두개의 데이터 셋을 받아서 그 차이를 계산해주는 클래스이다.
두 데이터 셋을 비교해서 변한부분만 파악해서 리싸이클러뷰에 반영한다.
DiffUtil을 사용하기 위해선 diffutilcallback 을 상속받아서
-areItemsTheSame(): 두 객체가 동일한지
-areContentsTheSame(): 두 아이템의 내용이 동일한 데이터를 가지는지 확인
위 2개의 메서드를 사용해서 두 객체가 동일한지 그리고 내용이 동일한지 비교한다.
DiffUtil은 아이템 갯수가 많을 경우 백그라운드 스레드에서 처리되어야하는데
이 DiffUtil을 편하게 쓰기 위해 만들어진 클래스가 AsyncListDiffer이다.
AsyncListDiffer클래스는 DiffUtil에 대해 자체적으로 스레드 처리를 해주는 클래스이다.
AsyncListDiffer 클래스를 통해 객체를 생성하고 그 객체에서 새로들어온 리스트를
submitList를 통해 전달하고
getCurrentList메서드를 통해 현재 데이터를 참조한다.
ListAdapter는
-AsyncListDiffer를 더 쓰기 편하도록 랩핑한 클래스이다
-리싸이클러뷰 어댑터가 ListAdapter를 상속하게 하고
초기화시 DiffUtil 콜백 객체를 넘겨준다.
-submitList()로 전체 데이터를 넘겨주면 어댑터가 백그라운드 스레드를 사용해 리스트 차이를 계산하여
화면을 갱신 시켜준다.
'과제 > 챌린지반과제' 카테고리의 다른 글
챌린지반과제 week5 (0) | 2024.04.17 |
---|---|
챌린지반과제 #2 회원가입 페이지를 MVVM 패턴으로 변경하기 (0) | 2024.03.26 |
챌린지#1 MVVM 패턴 (0) | 2024.03.26 |