【问题标题】:Image can not be set / display with space in name in Volley in Android无法在 Android 的 Volley 中设置/显示名称中带有空格的图像
【发布时间】:2014-12-05 07:32:13
【问题描述】:

我正在从服务器获取图像 url(即在 API 中)。

图片网址如下;

http://xyz.info/uploads/111968/Gruppenfotokika Lehrlinge.jpg”

名称中包含空格。

我使用以下代码使用 Volley 图像加载器来显示图像;

url = url.replace(" ", "%20");
holder.imgView.setImageUrl(url.toString(),MyVolley.getImageLoader());

但它没有设置设置/显示图像。

我对此进行了很多搜索,但找不到任何解决方案。

请帮帮我。

谢谢.....

【问题讨论】:

  • 你写的是一个无效的 URL。你从哪里得到它?

标签: android image android-volley


【解决方案1】:

尝试使用以下代码:

getImgUrl().replaceAll("[ ]", "%20");

用上面的代码替换所有空格。

GITHUB Sample/Lib SWIPEVOLLEY

【讨论】:

  • 顺便说一句,它仅适用于本机操作系统。我在三星设备上试过,但不起作用。 Nexus 和摩托罗拉以及具有几乎干净操作系统的设备正在提供正确的输出。
  • 更好地为所有操作系统找到最佳解决方案。
【解决方案2】:

您应该使用URLEncoder.encode() 而不是string.replace()

编辑

您的问题可能是,当您第一次运行代码时,您没有对空格进行 URL 编码,自然无法找到图像并且这个事实保存在 ImageLoader 缓存中。您可能需要清除此特定 URL 的缓存并重试 AppController.getInstance().getRequestQueue().getCache().remove(url); 甚至更好地在测试时禁用缓存setShouldCache(false);

此外,为了找出阻止您显示正确图像的错误类型,您可以将 NetworkImageView 替换为常规 ImageView 并使用此代码

``` // 如果你使用的是普通的 ImageView imageLoader.get(url, new ImageListener() {

@Override
public void onErrorResponse(VolleyError error) {
    Log.e(TAG, "Image Load Error: " + error.getMessage());
}

@Override
public void onResponse(ImageContainer response, boolean arg1) {
    if (response.getBitmap() != null) {
        // load image into imageview
        imageView.setImageBitmap(response.getBitmap());
    }
}

}); ```

【讨论】:

  • 我们用过但没用
  • 您是否在 xml 布局中使用 Volley NetworkImageView?您是否使用 RequestQueue 和 ImageCache 正确初始化了 ImageLoader?
  • 您是否尝试过将静态资源加载到您的 ImageView 中?可能是布局问题。你能发布布局和 ImageLoader 代码吗?
  • 我认为这不是布局问题,因为如果我设置静态本地图像或服务器 url 名称中没有空格,它可以正常工作。
猜你喜欢
  • 2013-12-07
  • 1970-01-01
  • 2014-10-16
  • 2021-03-26
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 1970-01-01
  • 2017-01-12
相关资源
最近更新 更多