1

下载后,我正在使用RecyclerView和 volleyNetworkImageView来渲染图像。该视图由作者图像、一些文本字段和图片组成。以下是填充视图的代码片段:

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

我面临的问题是滚动时,在 20 张图片中,大部分出现了 ~18 张。我从日志中看到所有图像都已下载并在缓存中,但有些未呈现。即使是默认图像也不会为这些视图显示。如果视图无效(再次向上和向下滚动),则会显示图像。

有趣的是,对于不显示图片的视图,即使我可以在其上方的帖子中看到相同的作者图片,也不会显示作者图片。好像整个视图在显示图像时都有问题。

下载图像后,有什么方法可以调用invalidate()或手动打开吗postInvalidate()NetworkImageView还是有其他想法?

4

1 回答 1

0

这也是在这里问的。我终于完全不使用 NetworkImageView 解决了这个问题。我开始使用常规的 ImageView,我仍然通过自定义图像请求和 onResponse() 在视图上应用图像通过 volley 获取图像。这似乎工作得很好。

    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);
}
于 2016-12-09T22:17:28.563 回答