volley setimageurl example android android-recyclerview android-volley networkimageview

android - setimageurl - networkimageview volley example



Recyclerview NetworkImageView(voley) no aparece (1)

Estoy usando RecyclerView y NetworkImageView de voley para renderizar imágenes una vez que se descargan. La vista consiste en una imagen de autor, algunos campos de texto y una imagen. A continuación se muestra el fragmento de código para llenar la vista:

// vh is the viewholder vh.picture.setDefaultImageResId(R.drawable.default_image); vh.picture.setImageUrl(post.getImageUrl(), mImageLoader);

El problema al que me enfrento es al desplazarme, de las 20 imágenes, en su mayoría ~ 18 aparecen. Veo en los registros que todas las imágenes se descargan y están en la caché, pero algunas no se representan. Incluso la imagen predeterminada no se muestra para esas vistas. Si la vista se invalida (desplácese hacia arriba y hacia abajo nuevamente), aparecerán las imágenes.

Lo curioso es que, para las vistas donde no se muestra la imagen, incluso la foto del autor no se muestra, incluso si puedo ver la misma foto del autor en una publicación justo encima. Es como si toda la vista tuviera un problema al mostrar imágenes.

¿Hay alguna forma de invocar manualmente invalidate() o postInvalidate() en NetworkImageView una vez que se descargan las imágenes? ¿O alguna otra idea?


Esto también fue preguntado aquí . Finalmente resolví este problema al no usar NetworkImageView en absoluto. Comencé a usar el regualar ImageView, todavía estoy buscando las imágenes a través de una solicitud de imagen personalizada y onResponse () aplicando la imagen en la vista. Esto parece funcionar bastante bien.

public void getImage(String url, final ImageView v) { if (TextUtils.isEmpty(url)) return; // don''t fetch a null url ImageRequest imageRequest = new ImageRequest(url, new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap response) { v.setImageBitmap(response); } }, 0, 0, null, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e(TAG, "Error- " + error.getMessage()); } }); mRequestQueue.addToRequestQueue(imageRequest); }