내일은개발왕

[안드로이드 스튜디오] Glide 이미지가 복사가 된다! 와! 왜..? 본문

오류삽질,기타삽질

[안드로이드 스튜디오] Glide 이미지가 복사가 된다! 와! 왜..?

NDN 2024. 2. 16. 22:06

리사이클러뷰 이미지 없는 곳에 복사가 되면 안되는데 왜 될까^^..;;;

이미지가 없는 곳에 복사가 되는 현상이 일어난다

 

비슷한 오류 나시는 분들께 도움이 되면 좋겠다 싶어서 올려본다.

Glide에 대한건 설명하지 않고 넘어가겠다.

 

- 왜 이런 현상이 일어나는가?

추측이긴 하지만, 이미지 url이 메모리 상에 남아서 그러는 것이라 생각된다.

처음에 스크롤을 내렸을 땐 이미지가 없었지만 내렸다 올린 후, 이미지가 복사가 되었다.

 

- 해결 방안

이미지 url이 사라지지 않고 남아있다는 것이라 추측하였으니 이걸 초기화 해주면 된다 생각하였다

서버에서 이미지를 가져오는 것이기 때문에, 공백이 넘어오는 경우 ImageView 부분을 초기화 시켜주고, 사진이 없다는 것을 표현하는 이미지를 넣어주었다.

if(image != ""){
    Glide.with(binding.infoSnsImage.context)
        .load(URL+image)
        .skipMemoryCache(true)
        .diskCacheStrategy(DiskCacheStrategy.NONE)
        .placeholder(R.mipmap.image_loading)
        .error(R.mipmap.image_load_fail)
        .fitCenter()
        .into(binding.infoSnsImage)
} else {
    Glide.with(binding.infoSnsImage.context).clear(binding.infoSnsImage)
    binding.infoSnsImage.setImageResource(R.drawable.no_image_photo)
}

공식 문서도 찾아보았는데, 공식에서도 이전 로드를 취소하도록 해 View의 내용이 변경되지 않도록 하라고 되어있었다.

그러니 리사이클러뷰로 이미지를 불러올 때, clear를 사용하도록 하자~ 

 

 

 

공식 문서링크는 아래와 같다

https://kofboy2000.github.io/glide-doc-kr/doc/getting-started.html

 

Glide v4 : 시작하기

원문보기:링크 기본 사용법 Glide 이미지 로딩은 쉽고, 대개 한줄로 가능 합니다. Glide.with(fragment) .load(myUrl) .into(imageView); 더이상 사용하지 않는 이미지 로딩의 취소도 매우 간단합니다. Glide.with(f

kofboy2000.github.io

 

잘돌아간다 ㅎㅎ