본문 바로가기

Android/Kotlin

RecyclerView 데이터 호출 시 깜박임

반응형

엄청 오랜만에 글을 씁니다... 뭐가 바쁘다고.... 

티스토리 블로그에는 미디움에서 글을 작성하고 해당 url을 넣는 식으로 진행이 될거같아요!

 

아니면 안드로이드 외적인 부분이나 필요한 부분에 따라 티스토리에도 글을 계속 올릴 예정입니다.

 

현재는 코틀린으로 스프링부트를 공부 중인데, 그 부분을 작성해볼까 합니다.!!!

 

올 한해 벌써 3월이지만 열심히!!! 살아야겠어요!

 

 

 

데이터를 호출하는데 뷰가 깜박인다!?

  • 아이템을 20개씩 호출하는 과정에서 뷰 전체가 깜박이는 현상을 발견!!! (이전에도 알고 있었지만 별로 신경을… 이러면 안 돼요…)
  • 뷰 전체가 깜박이는 원인을 찾아보니!!! notifyDataSetChanged() 시 Adapter가 이미 존재하는 Data set의 아이템들 중에서 어느 것이 변경된 지 모르니까 ViewHolder 전체를 다시 호출 하면서 이런 문제가 발생!
  • 알아서 해주면 얼마나 좋아…. 생각하던 중 구글신을 통해 처리 방법을 알게 되었습니다!

해결 방안

  • RecyclerView의 어댑터를 호출할 때 setHasStableIds 를 true로 지정해준다! 왜냐!? Adapter에게 각 아이템들이 유니크한 값을 가지고 있다고 알려주기 위함! 입니다.
  • 유니크한 값을 가지고 있다고 설정해 줌으로써 Adapter가 아이템들을 추적할 수 있게 됐고, 변동시에도 ViewHolder를 다시 매칭 시켜줄 필요가 없어졌습니다!
  • 여기서 끝!! 이 아니라 Adapter에게 유니크한 값이 있다고 알려줬으면! 그 유니크 값이 뭔지를 설정해줘야겠죠?
  • Adapter class 내에 getItemId()를 override하고, item의 유니크한 값을 넣어줍니다! 만약 여기서 유니크값이 없다!? 그러면 item의 hashcode를 넣어주면 됩니다! hashCode는 “메모리에서 가진 hash주소 값”이기 때문에, 각 아이템들의 유니크한 값이 됩니다!

이렇게 하면 뷰홀더를 다시 매칭시켜주느라 깜박이지 않고 데이터를 바로바로 보여줄 수 있습니다!

반응형