我使用Glide加载图片,每次调用它时我都会在其上设置一个新的监听器。我希望匿名"新的RequestListener"捕获局部变量" x"每次,但它似乎只是第一次捕获它。它几乎就像Glide忽略了我设置一个新的监听器和重用原始监听器的请求。以下是重现它的代码:
public void loadImage(int x) {
GlideApp.with(getContext()).load("http://url.to/image.png").listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) { return false; }
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
Log.d(TAG, "Value of x: " + x);
return false;
}
}).into(imageView);
}
调用loadImage(0)会导致:
值x:0
随后调用loadImage,无论传入的x值是多少,都会导致:
值x:0
有人知道这里发生了什么吗?
答案 0 :(得分:0)
我今天有这个确切的问题。使用旧的侦听器继续滑行。这是导致相同的setOnClickListener继续使用的某种方式,因此基本上我的所有按钮都将显示相同的视图。我添加后已修复:
.apply(RequestOptions.skipMemoryCacheOf(true))