使用MVP模式实施滑行回调

时间:2019-02-20 18:06:36

标签: java android android-glide

最近,我可以在视图中加载图像

Glide.with(getApplicationContext()).load(url).into(imageView);

现在,我想用一个接口实现一个回调,以了解何时从url中获取了图像,我需要此回调才能显示自己制作的自定义进度栏。

搜索,我发现了这个,但并不是我想要的

.listener(new RequestListener<Uri, GlideDrawable>() {
         @Override public boolean onException(Exception e, Uri model, Target<GlideDrawable> target, boolean isFirstResource) {
             return false;
         }
         @Override public boolean onResourceReady(GlideDrawable resource, Uri model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {

             return false;

         }
     })
     .into(imageView)
;

因为它没有为资源定义自定义的回调接口,有没有办法将回调附加到滑行上,所以我知道图像的下垂何时完成?

1 个答案:

答案 0 :(得分:1)

您可以将上述方法与.listener()一起使用,但是将您定义的新类类型的对象传递给它。该新类实现RequestListener,并在构造函数中将所需的任何自定义回调对象作为参数。下载已在onResourceReady()中准备好。 假设您将自定义回调作为对象:

CustomCallback CustomCallback;

并开始您的进度,然后再滑动加载图像:

customCallback.startProgressBar();

Glide.with(this)
.listener(new CustomRequestListener(customCallback))
.into(imageView);

自定义类为:

private static class CustomRequestListener implements RequestListener<Uri, GlideDrawable> {
private CustomCallback cc;

public CustomRequestListener(CustomCallback cc) {
   this.cc = cc;
}

@Override public boolean onException(Exception e, Uri model, Target<GlideDrawable> target, boolean isFirstResource) {
    cc.stopProgressBar();
    return false;
}

@Override public boolean onResourceReady(GlideDrawable resource, Uri model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
    cc.stopProgressBar();
    return false;
}
}