1

我使用RecyclerView和凌空NetworkImageView來下載後,它們呈現圖像。該視圖由作者圖片,一些文本字段和圖片組成。以下是代碼片段來填充的觀點:Recyclerview NetworkImageView(凌空)不顯示

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

我面對的滾動時,出的問題,說20幅圖像,大多〜18出現。我從日誌中看到,所有圖像都已下載並位於緩存中,但有些不會呈現。即使這些視圖不顯示默認圖像。如果視圖無效(再次上下滾動),則會顯示圖像。

有趣的是,對於不顯示圖片的視圖,即使作者圖片不顯示,即使我可以在其上方的帖子中看到相同的作者圖片。就好像整個視圖在顯示圖像時都有問題。

一旦圖像下載完成,有沒有辦法在NetworkImageView上手動調用invalidate()postInvalidate()?還是其他想法?

回答

0

這也被要求here。我終於通過完全不使用NetworkImageView來解決這個問題。我開始使用調節器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); 
}