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
调用。在 into
和 listener
之间切换顺序,它应该可以工作。
试试这个:-
使用此依赖关系使用Glide
的GlideDrawable
方法和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);
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
调用。在 into
和 listener
之间切换顺序,它应该可以工作。
试试这个:-
使用此依赖关系使用Glide
的GlideDrawable
方法和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);