glide from ejemplo cache android callback imageview android-glide

android - from - El oyente de Glide no funciona



glide cache image android (4)

Estoy usando Glide para cargar imágenes y agregué un escucha para saber cuándo está listo el recurso o si se produjo un error de cualquier tipo:

Glide.with(mContext) .load(url) .placeholder(R.drawable.glide_placeholder) // use dontAnimate and not crossFade to avoid a bug with custom views .dontAnimate() .diskCacheStrategy(DiskCacheStrategy.ALL) .listener(new RequestListener<String, GlideDrawable>() { @Override public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { // do something return true; } @Override public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { // do something return true; } }) .into(mCustomImageView);

La aplicación nunca se ejecuta dentro de onResourceReady o onException pero si onException la escucha y permito que se descargue async sin devolución de llamada, se ejecuta correctamente:

Glide.with(mContext) .load(url) .placeholder(R.drawable.glide_placeholder) // use dontAnimate and not crossFade to avoid a bug with custom views .dontAnimate() .diskCacheStrategy(DiskCacheStrategy.ALL) .into(mCustomImageView);

También intenté con GlideDrawableImageViewTarget lugar de listener para recibir devoluciones de llamada, pero la aplicación se ejecuta dentro de onLoadStarted pero nunca se ejecuta dentro de onLoadCleared , onLoadFailed y onResourceReady .


Aquí hay una forma de hacerlo:

Glide.with(context).load(...) .listener(object : RequestListener<Drawable> { override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean { //TODO handle error images while loading photo return true } override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean { //TODO use "resource" as the photo for your ImageView return true } }).submit()



Se encontró con el mismo problema, porque el ancho y el alto de mi ImageView eran 0,0. Le di a mi ImageView un ancho y una altura predeterminados, esto resolvió mi problema.


Se encontró con el mismo problema. Tener onResourceReady devolver falso hizo el truco para mí.