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

notifyDataSetChanged()로 Adapter가 새로고침할 때 Glide로 이미지 뿌려주는 것에 대한 문제 발생..

0 추천

리사이클러뷰로 어뎁터를 통해 이미지들을 리스트로 뿌려주는 것을 하고 있습니다.

처음 로드시에서 괜찮습니다 정상적으로 이미지가 Glide를 통해서 화면에 잘뿌려지는데

수정사항 발생 시 notifyDataSetChanged()를 통해 Adapter에 수정됨을 알리고 Adapter가 새로고침(?)을 하는데

Glide로 뿌린 이미지가 새로고침 되면서 문제가 발생합니다.

 

문제점

1. 크기가 작아 질 때가 있습니다.(glide의 캐시 특성상 캐시를 불러올 때 작은 캐시로 저장하기 때문에 작아지는 것으로 보입니다.)

 

2. 아예 출력이 안될때가 있습니다. 다시 수정사항이 발생하면 다시 출력 됩니다. 출력됬다가 안됐다, 아예 출력이 잘 안될 때도 있습니다.(이 문제가 가장 큰 문제입니다.)

 

3. 이미지 로드 때문에 스크롤이 조금 위로 튑니다.(스크롤이 원래 있던 자리에서 올라가버려서 불편함을 야기 합니다.)

 

이런 문제점이 있고 제가 이런 문제를 잡기 위해 해본 것들 입니다.

 

해본 것

1. glide외 다른 라이브러리 사용

: Picasso를 사용해 보았는데 사실 이 질문을 할 필요도 없었을 수도 있습니다. 제가 말했던 문제점을 해결하였습니다. 하지만 저는 많은 이미지를 빠르게 로드하는 것을 원하기 때문에 될 수 있으면 성능이 더 높은 glide를 사용해서 문제를 해결하는 방식으로 가고 싶습니다. 양해 부탁드립니다.

 

2. 이미 로드된 이미지를 다시 로드 시 로드하지 않기

: 이 방법이 맞다고 생각을 하지만 적절하지 않은 로직탓인지 잘되지가 않습니다. 아예 이미지가 로드되지 않아버리게 됩니다...ㅠㅠ

 

스크린샷

이미지 첨부하였습니다

이미지보시면 하트모양이 있는데 그걸 클릭하면 하트 수가 올라가고 동시에 이미지도 새로고침(?)되는 현상때문에

이미지가 출력되지 않거나 작거나 합니다...그리고 이미지 로드하는 것 때문에 스크롤도 올라가서 불편하기도 하구요 ㅎㅎㅎ..

도움주실 고수분을 찾습니다..긴 글 읽어주셔서 감사합니다.

chachacha (120 포인트) 님이 2017년 10월 17일 질문

1개의 답변

0 추천
전체를 새로고침 말고

notifyItemChanged 특정 아이템만 새로고침 해보세여

 

새로고침 하는 이미지 크기 저장해놓은다음에 다시 붙일때 Glide override로 크기 정해주면 되지 않을까 생각해봅니다
익명사용자 님이 2017년 10월 18일 답변
...