Glide - 无法解析方法侦听器

Glide - Cannot resolve method listener

storageReference.child("ProfilePicture")
    .child(currUser.getUid())
    .getDownloadUrl()
    .addOnSuccessListener(new OnSuccessListener<Uri>() {

        @Override
        public void onSuccess(Uri uri) {
            profilePicture = storageReference.child("ProfilePicture").child(currUser.getUid());
            Glide.with(getBaseContext())
                    .using(new FirebaseImageLoader())
                    .load(profilePicture)
                    .signature(new StringSignature(String.valueOf(System.currentTimeMillis())))
                    .into(profilePictures)
                    .listener(new RequestListener<URL, GlideDrawable>() {
                        @Override
                        public boolean onException(Exception e, URL model, Target<GlideDrawable> target, boolean isFirstResource) {
                            progressDialogCreate.hide();
                            return false;
                        }
                        @Override
                        public boolean onResourceReady(GlideDrawable resource, URL model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                            progressDialogCreate.hide();
                            return false;
                        }
                    });
            profilePictures.setVisibility(View.VISIBLE);
        }
    });

我遇到了这个错误,

有人可以解释为什么会这样吗?

方法之间的顺序错误。 into(profilePictures) 将 return 类型为 Target<GlideDrawable> 的变量,但是 listener 需要被 DrawableTypeRequest 调用。在 intolistener 之间切换顺序,它应该可以工作。

试试这个:-

使用此依赖关系使用GlideGlideDrawable方法和FirebaseUi

.using(new FirebaseImageLoader())方法
compile 'com.firebaseui:firebase-ui-storage:0.6.0'
compile 'com.github.bumptech.glide:glide:3.8.0'

Glide.with(MainActivity.this)
                    .using(new FirebaseImageLoader())
                    .load(profilePicture)
                    .signature(new StringSignature(String.valueOf(System.currentTimeMillis())))
                    .into(profilePictures)
                    .listener(new RequestListener<URL, GlideDrawable>() {
                        @Override
                        public boolean onException(Exception e, URL model, Target<GlideDrawable> target, boolean isFirstResource) {
                            progressDialogCreate.hide();
                            return false;
                        }

                        @Override
                        public boolean onResourceReady(GlideDrawable resource, URL model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                            progressDialogCreate.hide();
                            return false;
                        }
                    });

编辑:-

尝试像这样应用监听器。

Glide.with(MainActivity.this)
                .using(new FirebaseImageLoader())
                .load(profilePicture)
                .signature(new StringSignature(String.valueOf(System.currentTimeMillis())))
                .into(new GlideDrawableImageViewTarget(profilePictures) {
                    @Override
                    public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> animation) {
                        super.onResourceReady(resource, animation);
                        //try to hide here
                    }

                    @Override
                    public void onLoadFailed(Exception e, Drawable errorDrawable) {
                        super.onLoadFailed(e, errorDrawable);
                        //try to hide here
                    }
                });

GlideDrawable 已弃用,像这样使用侦听器。

            Glide.with(mContext)
                .load(item.getFriendUserPhotoUrl())
                .listener(new RequestListener<Drawable>() {
                    @Override
                    public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {

                        fullname.setVisibility(View.VISIBLE);
                        progressBar.setVisibility(View.GONE);
                        imageView.setImageResource(R.drawable.profile_default_photo);
                        return false;
                    }

                    @Override
                    public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {

                        progressBar.setVisibility(View.GONE);
                        fullname.setVisibility(View.VISIBLE);
                        return false;
                    }
                })
                .into(holder.thumbnail);