Android Glide: жди будущего и загружай - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть API, который возвращает ListenableFuture<Uri>.

Как я могу попросить глиссаду дождаться будущего и затем загрузить URI?

Я посмотрел онлайн за некоторую помощь, но не смог найти точный случай.

Я не хочу сам добавлять слушателя в будущее, а затем передавать фактическое значение URI в Glide.load и хочу сделать что-то вроде :

 Glide.with(context)
                .asDrawable()
                .load(uriFuture)
                .transform(Drawable.class, getBackgroundTransformation())
                .into(albumArtView);

Как правило, glide должен начать загружать URI, когда будущее будет завершено.

1 Ответ

0 голосов
/ 22 апреля 2020

используйте код ниже

@BindingAdapter({"bind:src_url", "bind:progress"})
public static void setChatSrcUrl(final ImageView view, String sourceUrl, final ProgressBar pb) {
    if (sourceUrl == null) {
        view.setImageResource(R.drawable.gray_wifi);
        pb.setVisibility(View.GONE);
    } else {
        pb.setVisibility(View.VISIBLE);
        Glide.with(view.getContext())
                .asBitmap()
                .load(sourceUrl)
                .override(250, 400)
                .fitCenter()
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .error(R.drawable.gray_wifi)
                .listener(new RequestListener<Bitmap>() {
                    @Override
                    public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
                        pb.setVisibility(View.GONE);
                        return false;
                    }

                    @Override
                    public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
                        pb.setVisibility(View.GONE);
                        return false;
                    }
                })
                .into(view);
    }
}
...