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);
}
이것만 참고하면 동적으로 뷰를 생성하며 순서를 맞춰 이미지를 입히는 작업은 수월할 것이다.