Android RecyclerView 3

[Android / RecyclerView] onCreateViewHolder vs onBindViewHolder: 클릭 리스너는 어디에 둘까?

🎯 RecyclerView 클릭 리스너, 어디서 설정하는 게 좋을까?저는 원래 RecyclerView의 Adapter에 리스너를 설정할 때, 자연스레 onBindViewHolder()에서 뷰홀더로 넣어주는 방식을 많이 사용했었는데, 이게 성능과 메모리에 좋지 않다는 걸 알게 되었습니다 ,,!  일단, 2개의 호출 시점이 중요했습니다 ! 🔁 호출 시점의 차이onCreateViewHolder()→ 새로운 뷰 홀더가 필요할 때 한 번만 호출🔄 onBindViewHolder()→ 뷰 홀더가 데이터와 바인딩될 때마다 반복적으로 호출 ⚠️  스크롤할 때마다 계속 호출됨 onBindViewHolder에서 리스너를 생성하게 된다면,스크롤할 때마다 새로운 리스너 객체가 만들어지기 때문에 메모리 사용량이 증가되고 G..

📱 Android 2025.04.07

[Bug / RecyclerView] java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionNotificationHolder

🐛 SwipeRefreshLayout에서 refresh시 발생 주 원인  : 데이터 변경 시 리사이클러뷰의 뷰 홀더와 실 데이터가 불일치 SwipeRefreshLayout에서 refresh 발생 시 Adapter의 아이템을 clear 하고 새로 그렸는데, 이 과정에서 문제가 발생한 거 같다  시도한 방법 1. bindViewHolder할 때 holder.bind(아이템목록[position])을 holder.bind(아이템목록[absoluteAdapterPosition])으로 변경  -> 똑같이 에러 발생 2. refresh후 데이터 가져올 때 clear()를 시키지 않고, 데이터를 가져온 후 기존의 데이터와 바꿈!  -> 성공 🔑 recyclerView는 기존의 뷰 홀더를 재사용하려고 하지만, cl..

🐛 버그 2024.05.20

[Android] RecyclerView (1) - Multi ViewHolder

안녕하세요 :) 오늘은 RecyclerView를 사용해보겠습니다 굉장히 자주 쓰이는 부분이기에 저 또한 더 자세히 알아두고자 정리해보려 합니다. (사용 빈도는 높지만 프로젝트를 처음부터 구현하지 않으면, 잘 잊기 쉽더라구요) 단순한 RecyclerView 사용보다 API를 연동해서 사용하는 방법을 정리해두면 실무에 더 될 것 같아서 REST API, ViewHolder, Retrofit, OkHttp를 함께 사용해보겠습니다. RecyclerView란 기존에 목록을 나타내기 위해 사용했던 ListView보다 더 유연하고 향상된 View로 쉽게 말하자면 ListView의 상위 버전이라고 생각하면 좋을 것 같습니다 1. 라이브러리 추가하기 implementation 'com.google.code.gson:gs..

📱 Android 2021.05.15