Glide를 사용한 동적뷰 생성

KooYm·2021년 12월 30일
0

Glide 라이브러리로 이미지 로딩하는 것은 아주 간단한 작업이고 한줄로 서버에 있는 이미지를 사용할 수 있다.
기존에 있는 코드에서는 뷰를 정적으로 만들어두고 거기에 Glide로 이미지를 입히는 방식이였으나, 동적으로 뷰를 생성할 일이 생겼다. ( 애초에 동적으로 해야하는데 안 되어있긴 함... )

처음엔 for문을 돌리면서 Glide에서 CustomTarget으로 뷰를 추가를 하였따. 이때 문제가 이미지 로딩 속도에 따라 순서가 뒤죽박죽 되는 것이다.
CustomTarget의 onResourceReady 안에서 처리를 하는데 이미지 로딩이 다 되었을 때 처리를 하는 부분이다.
이러니 로딩이 다되고 뷰가 추가되니 1,2,3 으로 들어가야할 것이 2,1,3 이렇게 들어가는 경우가 있고 계속 바뀌었다.

이걸 알고나서는 for문에서 뷰를 미리 추가하고, 이 뷰에다가 Glide로 이미지를 입혀야했다.

for (int i = 0; i < imgUrlList.size(); i++) {
                ImageView image = new ImageView(getApplicationContext());
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                image.setLayoutParams(params);
                image.setAdjustViewBounds(true);
                binding.noticeImageLayout.addView(image);
                GlideApp.with(image).asBitmap().load(imgUrlList.get(i)).into(image);
                }

이것만 참고하면 동적으로 뷰를 생성하며 순서를 맞춰 이미지를 입히는 작업은 수월할 것이다.

profile
안드로이드 끄적끄적

0개의 댓글