Sam Story

2024-08-19 리사이클러뷰 아이템 재사용 문제 본문

공부기록

2024-08-19 리사이클러뷰 아이템 재사용 문제

Sam H 2024. 8. 19. 16:01

리사이클러뷰를 사용하다보면 item이 여러개 있는 경우에

그 중 어떤 item이 구조나 디자인이나 값 등 변화가 일어나면

스크롤을 했을 때 데이터가 섞이는 현상이 나타날 수 있다.

 

예를들어서 같은 구조의 item이 여러개 있는 경우에

앞에 item의 데이터나 디자인이 변경되었을 때

스크롤을 하다보면 뒤에 아이템이 앞에 아이템에 속성을 그대로 사용하는 경우가 생긴다.

 

이러한 현상이 발생하는 이유가 리사이클러뷰의 재사용 때문이라고 한다.

 

이러한 문제점을 해결하기 위해서 찾아봤을 때는 리사이클러뷰의 재사용을 막는 방법도 사용되었었는데

이렇게 처리하게 되면 리사이클러뷰의 사용 목적이 없는거나 마찬가지였다.

 

그래서 간단하게 해결하는 방법중 하나가

@Override
public int getItemViewType(int position) {
    return position;
}



리사이클러뷰 Adapter 파일에 다음 메서드를 오버라이드 해서 해결 했다.

 

ViewType을 받아서 스크롤을 해도 그 형태를 그대로 유지시켜준다.

 

getItemViewType 이 메서드는

리사이클러뷰가 다양한 유형의 항목을 표시할 수 있도록 지원하는 데 도움을 주는 메서드다.

 

각 항목의 레이아웃이 변경되어도 적절한 뷰홀더를 선택해 처리하게끔 도와주는 메서드 인듯 하다.

 

예전에도 종종 이문제가 발생했던 것 같은데 어댑터 구조를 잘 못 짜서 그런걸 수도 있겠다는 생각이 든다..

 

데이터 바인딩을 쓰지 않은 예전 코드에서 일어난 문제인데

내가 봤을 때는 큰 문제는 없어 보이지만 코드의 문제일 수도 있겠다.