我正在使用RecyclerView
和凌空的NetworkImageView
来渲染图像。视图由作者图像,一些文本字段和图片组成。以下是填充视图的代码段:
// vh is the viewholder
vh.picture.setDefaultImageResId(R.drawable.default_image);
vh.picture.setImageUrl(post.getImageUrl(), mImageLoader);
我面临的问题是当滚动时,说出20张图像,大多数是~18出现。我从日志中看到所有图像都已下载并位于缓存中,但有些图像未呈现。甚至不会为这些视图显示默认图像。如果视图无效(再次向上和向下滚动),则会显示图像。
有趣的是,对于没有显示图片的视图,即使我可以在其上方的帖子中看到同一作者图片,也不会显示作者图片。就像整个视图在显示图像时出现问题一样。
下载图片后,有没有办法在invalidate()
上手动拨打postInvalidate()
或NetworkImageView
?还是其他任何想法?
答案 0 :(得分:0)
还问了here。我终于通过不使用NetworkImageView解决了这个问题。我开始使用regualar ImageView,仍然通过自定义图像请求和onResponse()应用图像在视图上获取图像。这看起来效果很好。
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);
}