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);
}