使用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的主要内容,如果未能解决你的问题,请参考以下文章