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

Gilde 순서대로 이미지 가져오기 질문

0 추천
for(JsonElement jsonElement : mytag_list){
    final MyTagItem myTagItem = new MyTagItem(jsonElement.getAsJsonObject());
    try {
        Glide.with(getActivity())
                .load(myTagItem.video_thumbnail)
                .asBitmap()
                .error(R.drawable.icon_facebook)
                .into(new SimpleTarget<Bitmap>() {
                    @Override
                    public void onLoadFailed(Exception e, Drawable errorDrawable) {
                        myTagItem.imageBitmap = ((BitmapDrawable) errorDrawable).getBitmap();
                        myTagItems.add(myTagItem);
                        imageReady(appCompatDialog);
                    }

                    @Override
                    public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                        myTagItem.imageBitmap = resource;
                        myTagItems.add(myTagItem);
                        imageReady(appCompatDialog);
                    }
                });
    } catch (Exception e) {
        e.printStackTrace();
    }
}

 

제가 지금 위와같이 처리를하면서 생각해보니 이미지가 받아오는 순서대로 리스트에 넣는거라

서버에서 가져온 리스트와 순서가 바뀌더라구요 그래서

해결방법으로 미리 값을 넣어두고 i에 값에 맞춰서 값을 넣으면 되겠다 싶어서

 

for(int i = 0; i < mytag_list.size();i++){
    final MyTagItem myTagItem = new MyTagItem(mytag_list.get(i).getAsJsonObject());
    myTagItems.add(myTagItem);
    try {
        final int finalI = i;
        Glide.with(getActivity())
                .load(myTagItem.video_thumbnail)
                .asBitmap()
                .error(R.drawable.icon_facebook)
                .into(new SimpleTarget<Bitmap>() {
                    @Override
                    public void onLoadFailed(Exception e, Drawable errorDrawable) {
                        myTagItems.get(finalI).imageBitmap = ((BitmapDrawable) errorDrawable).getBitmap();
                        imageReady(appCompatDialog);
                    }

                    @Override
                    public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                        myTagItems.get(finalI).imageBitmap = resource;
                        imageReady(appCompatDialog);
                    }
                });
    } catch (Exception e) {
        e.printStackTrace();
    }
}

 

이렇게 바꿧는데 이것보다 더 좋은방법이 있을까여??

정에약한마음 (1,160 포인트) 님이 2017년 12월 11일 질문

1개의 답변

0 추천
 
채택된 답변
myTagItems.get{ifnalI) 대신 myTagItem 해도 되지 않을까요?
눈빛 (4,120 포인트) 님이 2017년 12월 12일 답변
정에약한마음님이 2017년 12월 12일 채택됨
이미 add를 한뒤라서 myTagItem의 값을 바꿔도 리스트에 있는 값이 변경되지 않을탠데요?
myTagItems 가 List<MyTagItem> 아닌가요? 특별한 로직이 들어있지 않다면
 Reference 로 값을 참조하고 있어서 add 한 후에 객체의 속성을 변경해도 반영이 되는 것으로 알고 있습니다.
...