RecyclerView wrong position 이슈

이영훈·2022년 4월 28일
0

사건의 발단

리팩토링 중,리싸이클러뷰의 포지션이 정상적으로 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
And dev

0개의 댓글