gpt4 book ai didi

android - Recycler view with volley 图像请求(取消请求)

转载 作者:行者123 更新时间:2023-11-29 14:27:21 27 4
gpt4 key购买 nike

所以我使用回收器 View 在网格中显示图像,并使用 volley 库从 url 下载图像作为位图。

public void onBindViewHolder(final TrendingAdapter.ViewHolder viewHolder, int i) {
ImageRequest request = new ImageRequest(url, new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap bitmap) {
if (bitmap != null) {
viewHolder.getmImageView().setImageBitmap(bitmap);
}
}
}, 0, 0, null,
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
});
AppController.getInstance().addToRequestQueue(request);
}

问题是当我在下载图像之前滚动并跳过一个或多个 View 并且该 View 被回收时,图像下载请求不会在那些中间 View 上取消,导致那个/那些图像在实际图像加载到该 View 中。

所以我考虑使用标签取消那些中间图像请求,但不知道如何取消其他并行 View 中的请求!

此外,当我使用 volley NetworkImageView(它自己处理此类图像取消)时,也会给出完美的结果。但是我需要获取每个图像的位图以从中选择颜色,所以我不能使用 NetworkImageView。

问)如何在使用 recyclerview 膨胀的特定 ImageView 上取消所有待处理的 volley 图像请求(除了应该加载且不影响其他平行 View 的图像请求)?

最佳答案

您应该使用 ImageLoader 类,而不是直接向 RequestQueue 添加请求。这样,用于获取图像的 get() 方法将返回类型为 ImageContainer 的对象。

将这个ImageContainer保存在ViewHolder中,当 View 被回收时,只需调用回收图像上的cancelRequest()方法即可如果尚未执行,则取消请求。

看看 NetworkImageView 的代码。它以类似的方式工作。

关于android - Recycler view with volley 图像请求(取消请求),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26591390/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com