studio para library imagenes glide galeria example ejemplo codigo carrusel app android bitmap android-viewpager android-adapter android-glide

android - para - Las imágenes se cargan aleatoriamente en el buscapersonas con Glide y SimpleTarget



glide app dependencies (1)

Estoy usando Glide para cargar imágenes en una ViewPager usando un PagerAdapter . Cuando cargo las imágenes usando el siguiente método:

Glide.with(mContext).load(mImage).placeholder(R.drawable.placeholder).into(mImageView);

Todo funciona bien, pero ahora necesito que el mapa de bits se deslice y lo almacene en un mapa cuando se carga para editarlo en el futuro, así que cambié este método al siguiente:

Glide.with(mContext).load(mImage).asBitmap().placeholder(R.drawable.placeholder).into(new SimpleTarget<Bitmap>() { @Override public void onLoadStarted(Drawable placeholder) { super.onLoadStarted(placeholder); mImageView.setImageDrawable(placeholder); } @Override public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) { if (bitmap != null) { mImageView.setImageBitmap(bitmap); } mBitmapMap.put(position, bitmap); mInterface.onImageLoaded(position, bitmap); } });

Pero el resultado es que la imagen no siempre se muestra. Creo que está relacionado con el hecho de que el deslizamiento carga imágenes asíncronas y en algún momento regresa cuando el método instatiateItem ya terminó de ejecutarse.

Parece que esta pregunta está relacionada: ViewPager PagerAdapter no actualiza la vista

Pero las sugerencias allí no me ayudaron.

¿Alguien ha encontrado este problema y tiene una solución para ello?

Gracias por adelantado.


La solución para este problema fue utilizar otro tipo de objetivo, en lugar de usar el objeto SimpleTarget que estaba usando cuando escribí la pregunta, lo reemplacé con el objeto BitmapImageViewTarget que creo que maneja las imágenes de forma asíncrona. Entonces el código final que utilicé para esto es:

Glide.with(BaseApplication.getInstance()).load(newContent).asBitmap().placeholder(R.drawable.ic_action_picture).into(new BitmapImageViewTarget(mIvContent) { @Override public void onLoadStarted(Drawable placeholder) { super.onLoadStarted(placeholder); mIvContent.setImageDrawable(placeholder); } @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { super.onResourceReady(resource, glideAnimation); mBitmapMap.put(position, resource); progressBar.setVisibility(View.INVISIBLE); mIvContent.setImageBitmap(resource); } @Override public void onLoadFailed(Exception e, Drawable errorDrawable) { super.onLoadFailed(e, errorDrawable); progressBar.setVisibility(View.INVISIBLE); } });