首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MVP模式实现Glide回调

问使用MVP模式实现Glide回调
EN

Stack Overflow用户
提问于 2019-02-21 02:06:36
回答 1查看 194关注 0票数 0

最近,我用它在我的视图中加载了一个图像

代码语言:javascript
复制
Glide.with(getApplicationContext()).load(url).into(imageView);

现在,我想用一个接口来实现一个回调,以便知道图像何时从url中获取,我需要这个回调来显示我所做的自定义进度条。

我找到了这个,但并不完全是我想要的

代码语言:javascript
复制
.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)
;

因为它没有为资源定义自定义回调接口,所以有没有办法将回调附加到glide,这样我就可以知道图像的下载何时完成?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-04 21:02:02

您可以对.listener()使用上面的方法,但是将您定义的新类类型的对象传递给它。这个新类实现了RequestListener,并在构造函数中接受所需的任何自定义回调对象作为参数。下载已在onResourceReady()中完成。假设您将自定义回调作为一个对象:

代码语言:javascript
复制
CustomCallback CustomCallback;

并在使用glide加载图像之前开始您的进度:

代码语言:javascript
复制
customCallback.startProgressBar();

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

自定义类是:

代码语言:javascript
复制
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;
}
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54792699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档