마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

도저히 해결방법이.. Recyclerview 재사용 문제

0 추천
Recyclerview사용중이며

Adapter에 아이디값들이 저장된 Array를 보내고

Adapter에선  onBindViewHolder 함수에서  Thread생성

Thread에서 해당 아이디값으로 쿼리를한후 화면을 뿌려줍니다.

 

문제는 처음에는 문제가 없으나, 업데이트를 통해 Array를 clear및 addAll을 통해 데이터를 갱신하고

notifyDataSetChanged 함수를 호출할경우 순간 포지션이 꼬였다가 재자리가 잡힙니다.



1 ~ 30번까지의 아이템이 있다면 순간 1~20번정도 아이템은 사라지고

21~30이 보였다가, 1 ~ 30번의 리스트가 보여집니다.

앞단 아이템이 사라졌다가 나타난기분이라고 보면 되겠네요.

 

어떻게 이 문제를 접근해보면 좋을까요?

 

-------

 

onBindViewHolder에서

Runnable로 쓰레드 생성하고 쓰레드내에서 데이터베이스 쿼리후 holder에 데이터를 뿌리니까

꼬이는것같네요..

그렇다고 쓰레드를 안쓰자니 느릴거같고..

방법없나요?
익명사용자 님이 2018년 6월 23일 질문
2018년 6월 23일 수정

1개의 답변

0 추천

onBindViewHolder에서 쓰레드를 처리하고나서 쓰레드 작업이 완료되었을때

onBindViewHolder에서 할당받은 ViewHolder가 아직도 유효한 holder인지 확인하고

작업 결과는 viewHolder에 반영해야합니다.

쓰레드 작업중에 할당받은 viewHolder가 다른 아이템에게 할당될 수 있기 때문입니다.

디자이너정 (42,810 포인트) 님이 2018년 6월 25일 답변
...