본문 바로가기
프로그래밍/Android

[Android] holder.getAdapterPosition의 Deprecated

by Youngs_ 2022. 7. 31.

개요

RecyclerView의 ViewHolder의 getAdapterPosition() 함수가 Deprecated 됐다. 어떻게 변경하면 되는지 알아보자.

 

안드로이드 개발자 사이트 설명

getAdapterPosition() 메소드는 Adapter가 다른 Adapter를 중첩하는 경우 어느 adapter의 위치인지 혼란스러워 아래의 두가지 방법으로 호출하도록 하고 있습니다.

  • getBindingAdapterPosition()
     - Adapter내의 위치를 반환
  • getAbsoluteAdapterPosition()
     - RecyclerView에서의 위치를 반환

한 Adapter를 사용하여 RecyclerView를 이용한다면 위 두 메소드는 같은 값을 반환한다. 하지만 ConcatAdapter로 여러 Adapter를 이어 하나의 RecyclerView에 표시한다면, 두 값은 다르게 표시된다.

 

예를 들어 A, B, C Adapter를 생성하고 ConcatAdapter로 이어주는 경우, B Adapter의 두번째 아이템의 위치를 두 메소드를 이용하여 가져온다면 getBindingAdapterPosition()은 터치한 Adapter 내에서의 위치 1을 반환하고 getAbsoluteAdapterPosition()은 RecyclereView에서의 절대 위치인 A Adapter의 item 갯수 + B Adapter에서의 위치인 1을 반환하게 된다.

 

마치며

Deprecated 된 getAdapterPosition() 대신 사용할 메소드에 대해서 알아보았다. 알아보면서 여러 Adapter를 합치는 ConcatAdapter가 존재한다는 것을 알게되었고 RecyclerView를 Adapter 갯수만큼 생성할 필요가 없다는 것을 알게되었다.


출처 : https://growup-lee.tistory.com/entry/Android-ViewHolder-getAdapterPosition-Deprecated

 

[Android] ViewHolder getAdapterPosition Deprecated

개요 RecyclerView의 ViewHolder의 getAdapterPosition() 함수가 Deprecated 됐다. 어떻게 변경하면 되는지 알아보자. 안드로이드 개발자 사이트 설명 getAdapterPosition() 메소드는 Adapter가 다른 Adapter를 중..

growup-lee.tistory.com

 

댓글