Загрузить массив URL-адресов с помощью Glide - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь загрузить ArrayList URL-адресов и получить от них растровые изображения, используя мой код, показанный ниже, не работает, Toast показывает мне 0 в качестве сообщения.

   @SuppressLint("CheckResult")
    public void getBitmapFromUrls() {
        final ArrayList<Bitmap> arrayBitmaps = new ArrayList<>();
        RequestOptions requestOptions = new RequestOptions();
        requestOptions.diskCacheStrategy(DiskCacheStrategy.ALL).dontTransform();
        for (int i = 0; i < listItems.size(); i++) {
            Glide.with(getActivity())
                    .asBitmap()
                    .apply(requestOptions)
                    .load(listItems.get(i).getImgUrl())
                    .into(new SimpleTarget<Bitmap>() {
                        @Override
                        public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                            arrayBitmaps.add(resource);
                        }
                    });
        }
        Toast.makeText(getActivity(), "" + arrayBitmaps.size(), Toast.LENGTH_SHORT).show();

    }

1 Ответ

0 голосов
/ 11 сентября 2018

Когда вы вызываете Glide для загрузки изображений, он порождает некоторые фоновые потоки для выполнения заданий (загрузка изображений с сервера). Тем временем вы показываете Toast в потоке пользовательского интерфейса для отображения размера списка растровых изображений. Но в то время фоновые потоки могли обрабатываться и также не возвращали результат. Таким образом, размер списка растровых изображений равен 0.

Вы можете изменить свой код на:

for (int i = 0; i < listItems.size(); i++) {
    Glide.with(getActivity())
            .asBitmap()
            .apply(requestOptions)
            .load(listItems.get(i).getImgUrl())
            .into(new SimpleTarget<Bitmap>() {
                @Override
                public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                    arrayBitmaps.add(resource);
                    // All images has been loaded and add to bitmap list as well.
                    if (arrayBitmaps.size == listItems.size()) {
                        Toast.makeText(getActivity(), "" + arrayBitmaps.size(), Toast.LENGTH_SHORT).show();
                    }
                }
            });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...