Реализовать обратные вызовы Glide с помощью шаблона MVP - PullRequest
0 голосов
/ 20 февраля 2019

В последнее время у меня есть это, чтобы загрузить изображение в моем представлении

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 голосов
/ 04 апреля 2019

Вы можете использовать вышеуказанный подход с .listener (), но передать ему объект нового типа класса, который вы определили.Этот новый класс реализует RequestListener и принимает в качестве аргумента в конструкторе любой пользовательский объект обратного вызова, который вы хотите.Загрузка готова в onResourceReady ().Предполагая, что у вас есть пользовательский обратный вызов в качестве объекта:

CustomCallback CustomCallback;

и начните свой прогресс перед загрузкой изображения с помощью glide:

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;
}
}
...