RecyclerView wrong position 이슈

이영훈·2022년 4월 28일

사건의 발단

리팩토링 중,리싸이클러뷰의 포지션이 정상적으로 bind되지 않는 이슈가 발생했다.

1,2,3,5 이런식으로 4여야할 포지션이 5가 되어버리는 이슈가 발생했었다.

무엇이 문제인지 거의 두시간 가량을 삽질한 결과…

기존의 코드

override fun getItemId(position: Int): Long = list[position].hashCode().toLong()

RecyclerViewAdapter 안의 getItemId 오버라이드 메소드의 로직이 문제였다…………

원래는 hashCode를 가져오는 list의 타입은 커스텀 클래스였는데, String 타입으로 수정을 했다.

각 아이템은 빈 문자열을 세팅해줘서인지 hashCode가 전부 0이라 id의 기능을 할 수 없어서 생긴 문제였다.

수정한 코드

override fun getItemId(position: Int): Long = position.toLong()

그냥 단순하게 position.toLong값으로 itemId를 세팅해주게 수정했다.

profile
안드로이드 개발자입니당

0개의 댓글