반응형
getBindingAdapterPosition()과 absoluteAdapterPosition 사이에는 기능적으로 비슷하면서도
가져오는 위치의 종류(상대적 위치 vs 절대적 위치)에서 차이를 보인다.
결과족으로는 RecyclerView.ViewHolder에서 현재 아이템의 위치를 반환하는 역할을 하지만
언어와 문맥에 따라 결과값이 달라질 수 있다.
특히 이러한 차이점은 ConcatAdapter와 같이 여러 개의 어댑터가 결합된 RecyclerView에서 중요해진다.
- getBindingAdapterPosition() : 상대적 위치 반환
- ViewHolder가 바인딩된 어댑터 내에서의 상대적인 위치를 반환한다.
- ConcatAdapter를 사용하는 경우, ViewHolder가 속한 개별 어댑터 내에서의 위치를 의미한다. - absoluteAdapterPosition() : 절대적 위치 반환
- RecyclerView 전체에서의 절대적 위치를 반환한다.
- ConcatAdapter 같이 여러 어댑터가 결합된 경우에도 RecyclerView 내에서의 전체적인 위치를 나타낸다.
예시 설명
Adapter A : 3개의 아이템을 가짐 (A1, A2, A3)
Adapter B : 2개의 아이템을 가짐 (B1, B2)
[A1] [A2] [A3] [B1] [B2]
위와 같이 두 개의 RecyclerView가 존재한다고 가정할 때
- 상대적 위치 : getBindingAdapterPosition()
Adapter A
A1 => 0
A2 => 1
A3 => 2
Adapter B
B1 => 0
B2 => 1 - 절대적 위치 : absoluteAdapterPosition()
RecyclerView 에서의 절대적 위치
A1 => 0
A2 => 1
A3 => 2
B1 => 3
B2 => 4
반응형
'Android' 카테고리의 다른 글
[Android] RecyclerView의 AsyncListDiffer 알아보기 (0) | 2024.03.07 |
---|---|
[Android] RecyclerView의 DiffUtil 알아보기 (0) | 2024.03.06 |
[Android] ViewHolder의 위치 참조 - getAdapterPosition / getBindingAdapterPosition (0) | 2024.03.03 |
[Android] Fragment 생성 방법 정리 / newInstance() (0) | 2024.03.02 |
[Android] RecyclerView - ViewHolder의 재사용과 상태 관리의 중요성 (선택 이벤트 처리) (0) | 2024.03.01 |