首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Recyclerview NetworkImageView (volley)未显示

Recyclerview NetworkImageView (volley)未显示
EN

Stack Overflow用户
提问于 2016-12-02 00:46:11
回答 1查看 499关注 0票数 1

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

代码语言:javascript
复制
// vh is the viewholder    
vh.picture.setDefaultImageResId(R.drawable.default_image);
vh.picture.setImageUrl(post.getImageUrl(), mImageLoader);

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

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

下载完镜像后,有没有办法手动调用NetworkImageView上的invalidate()postInvalidate()?还有其他的想法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-12-10 06:17:29

这也被问到了here。通过根本不使用NetworkImageView,我最终解决了这个问题。我开始使用regualar ImageView,我仍然通过自定义图像请求和onResponse()在视图上应用图像来获取图像。这似乎工作得很好。

代码语言:javascript
复制
    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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40916054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档