2016-09-05 97 views
0

我通過一些教程學習Android。我目前正在致力於androidhive的this教程。本教程的目標是顯示電影列表,並顯示年份,流派,圖像......所以現在我有一個問題,當服務器上沒有圖像時會發生什麼。如果Android上的服務器上沒有圖像,則顯示默認圖像

movie.setThumbnailUrl(obj.getString("image")); 

XML:

<com.android.volley.toolbox.NetworkImageView 
    android:id="@+id/thumbnail" 
    android:layout_width="80dp" 
    android:layout_height="80dp" 
    android:layout_alignParentLeft="true" 
    android:layout_marginRight="8dp" /> 

我怎麼會顯示默認圖像(例如,從繪製)如果圖像不存在於服務器上?

+0

包括服務器返回 –

回答

2

只需添加一個默認背景的networkImageView以xml:

<com.android.volley.toolbox.NetworkImageView 
    android:id="@+id/thumbnail" 
    android:background:"@drawable/default_image" 
    ... /> 

,並檢查是否是字符串null或空

if (obj.getString("image") != null && !obj.getString("image").isEmpty()) { 
    movie.setThumbnailUrl(obj.getString("image")); 
} 

,如果你希望通過編程設定,它只是用別人:

else { 
    movie.setDefaultImageResId(R.drawable.default); 
    movie.setErrorImageResId(R.drawable.error); 
} 
+0

當我嘗試第二種方法,我得到了以下錯誤的樣本JSON:(?)(?)'不能解析方法setDefaultImageResId'和'不能解析方法setErrorImageResId'(_I正在創建在片段中列出,以便可能是原因_)。 – Kemo

2

從服務器加載圖像的最佳方式是使用畢加索

picasso

的圖像加載和緩存庫爲Android專注於平滑滾動 ,它會帶你只是一條線,做你想做什麼。

Picasso.with(context) 
    .load(url) 
    .placeholder(R.drawable.user_placeholder) 
    .error(R.drawable.user_placeholder_error) 
    .into(imageView); 
it's easier and cleaner. 
+1

或滑翔https://github.com/bumptech/glide – mayosk

+0

@Rahul Vats謝謝你的回答。我是初學者,所以這次我將使用user6749691的答案,它適用於此示例,但下次我可能會使用畢加索:) – Kemo

+1

Oki沒有問題@Kemo。它的選擇.... –

相關問題