【问题标题】:Displaying default image if there is no image on server in Android如果 Android 中的服务器上没有图像,则显示默认图像
【发布时间】:2016-09-05 12:47:06
【问题描述】:

我正在通过一些教程学习 Android。我目前正在编写来自 androidhive 的 this 教程。本教程的目标是显示电影列表并显示年份、类型、图像......所以现在我有一个问题,当服务器上没有图像时会发生什么。

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" />

如果图像在服务器上不存在,我将如何显示默认图像(例如来自可绘制的图像)?

【问题讨论】:

  • 包含一个服务器返回的示例 json

标签: java android json image android-volley


【解决方案1】:

只需在 xml 中为 networkImageView 添加一个默认背景即可:

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

并检查字符串是否为空或为空

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

如果你想以编程方式设置它,只需使用 else :

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

【讨论】:

  • 当我尝试第二种方法时,我收到以下错误:cannot resolve method setDefaultImageResId(?)cannot resolve method setErrorImageResId(?)我正在片段中创建列表,这可能是原因)。
【解决方案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.

【讨论】:

  • @Rahul Vats 谢谢你的回答。我是初学者,所以这次我将使用 user6749691 的答案,它适用于这个示例,但下次我可能会使用 picasso :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 2022-01-08
  • 2023-02-05
  • 2021-01-12
  • 2016-10-20
  • 2019-02-04
  • 2013-05-27
相关资源
最近更新 更多