Glide - call method after fallback or error when trying load photo

前端 未结 2 1509
野的像风
野的像风 2021-01-03 04:09

Glide - call method after fallback or error when trying load photo.

Hi!

Is there any a way to check if Glide load photo from link or use f

相关标签:
2条回答
  • 2021-01-03 04:46

    This helps me:

    private void loadPicture(final ViewHolder holder, String photoUrl, final Boolean shouldLoadAgain) {
        holder.progressBar.setVisibility(View.VISIBLE);
    
        Glide
            .with(mActivity)
            .load(photoUrl)
            .fallback(R.drawable.bg_gradient)
            .error(R.drawable.bg_gradient)
            .centerCrop()
            .crossFade()
            .listener(new RequestListener<String, GlideDrawable>() {
                @Override
                public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                    holder.progressBar.setVisibility(View.GONE);
                    if (shouldLoadAgain)
                        loadPicture(holder, mPhotoUrl, false);
                    return false;
                }
    
                @Override
                public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                    holder.progressBar.setVisibility(View.GONE);
                    return false;
                }
            })
            .diskCacheStrategy(DiskCacheStrategy.SOURCE)
            .into(holder.photo);
    }
    
    0 讨论(0)
  • 2021-01-03 05:00

    This is working for me. For some reason, if I don't use postDelayed on load failed, the app is crashing.

    private void updateImage(final String image) {
        Glide
                .with(this)
                .load(image)
                .apply(new RequestOptions()
                        .placeholder(R.drawable.bg_gradient)
                        .error(R.drawable.bg_gradient))
                .listener(new RequestListener<Drawable>() {
    
                    @Override
                    public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                        new Handler().postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                updateImage(image);
                            }
                        }, 1000);
                        return false;
                    }
    
                    @Override
                    public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                        return false;
                    }
                })
                .into(holder.photo);
    }
    
    0 讨论(0)
提交回复
热议问题