使用Glide加载url的arraylist

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Glide加载url的arraylist相关的知识,希望对你有一定的参考价值。

我正在尝试加载URL的ArrayList并使用滑动我的代码从下面获取位图不起作用,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();

    
答案

当您调用Glide加载图像时,它会生成一些后台线程来执行作业(从服务器加载图像)。在此期间,您在UI线程上显示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();
                    
                
            );

以上是关于使用Glide加载url的arraylist的主要内容,如果未能解决你的问题,请参考以下文章

Android关于Glide的使用(高斯模糊加载监听圆角图片)

如何使用 Glide 将 svg 图像加载到图像视图

为啥 Glide 只第二次加载图像? (安卓)

Glide加载相同URL时由于缓存无法更新图片

Glide图片加载库的使用

如何使用 glide 从 android 中的音频 url 获取缩略图