Android

[Android] absoluteAdapterPosition 와 getBindingAdapterPosition 차이점

도우 2024. 3. 4. 17:52
반응형

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

 

반응형