← 질문 목록
#94깊이 0
재사용 셀에 이전 데이터가 비치는 이유는?
모바일기초
onBindViewHolder가 새 항목의 모든 가변 속성을 덮어쓰지 않았기 때문이다. 이전 항목의 가시성이나 체크 상태와 이미지가 ViewHolder에 남는다.
RecyclerView→ViewHolder
화면 밖 셀을 회수한다
RecyclerView→Adapter
새 위치의 데이터를 요청한다
Adapter→ViewHolder
모든 가변 상태를 덮어쓴다
전체 바인딩에서는 텍스트와 이미지와 선택 상태와 리스너를 현재 모델 기준으로 모두 설정한다. 비동기 이미지 요청은 재사용 전에 취소하거나 새 요청으로 교체한다.
클릭 시 바인딩 때 받은 position을 저장하지 않는다. 실행 시점의 bindingAdapterPosition을 확인하거나 항목 자체를 콜백에 넘긴다.
DiffUtil과 stable ID는 변경 계산과 애니메이션을 돕는다. 올바른 바인딩을 대신하지 않으며 잘못된 ID는 화면 상태를 엉뚱한 항목에 붙인다.