【问题标题】:Android picasso check if image url exist before load into imageView [duplicate]Android毕加索在加载到imageView之前检查图像url是否存在[重复]
【发布时间】:2018-12-12 10:00:20
【问题描述】:

我目前正在使用数据绑定实现 RecyclerView,以从 API 获取的 url (/images/slider/my/myImage.jpg) 列表加载图像。

@BindingAdapter("imageUrl")
public static void loadImage(ImageView imageView, String imageUrl){
    Picasso.with(imageView.getContext()).load(CommUtils.WEBSITE_LINK + imageUrl).into(imageView);
}

目前我的 ListAdapter 中有上面的代码。当 url 在正确的链接中或存在于服务器中时,该代码能够很好地加载图像,否则它将显示为空白。因此,我想创建一个案例,在显示之前检查图像是否存在/链接是否正确。

我想要实现的是:

if(Image Link exist){
//Load Image, Picasso.with.................
} else {
//Use Dummy Photo, Picasso.with..................
}

[编辑] 所以现在我知道如果路径不存在,我可以使用 error() 函数来创建另一个负载。如果我的 API 将返回两种不同的格式或“url”,这可能是什么情况?带路径 (/images/slider/my/myImage.jpg) 或不带路径 (myImage.jpg) 因此在我的代码中我想做类似的事情

if(websitelink + ImageUrl){ load image }
else(websitelink + path + ImageUrl) { load iamge} //Should this code run under error() from the first case??

我可以先对 ImageUrl 执行 检查,而不是尝试直接加载图像并且仅在出错时更改

【问题讨论】:

  • 请删除重复的,它不能解决我的任何问题

标签: android android-imageview picasso


【解决方案1】:

无论如何,毕加索都支持占位符和错误图像:

Picasso.get()
    .load(url)
    .placeholder(R.drawable.user_placeholder)
    .error(R.drawable.user_placeholder_error)
    .into(imageView);

所以,如果你想要归档的只是显示一些错误图像,当加载不起作用时,这就是你所需要的。

【讨论】:

    【解决方案2】:

    您可以使用com.squareup.picasso.Callback 来监听响应。:

    Picasso.with(getContext())
        .load(url)
        .placeholder(R.drawable.image_name) // Your dummy image...
        .into(imageView, new com.squareup.picasso.Callback() {
             @Override
             public void onSuccess() {
                 // Image is loaded successfully...
             }
    
             @Override
             public void onError() {
                 // Unable to load image, may be due to incorrect URL, no network...
             }
        });
    

    【讨论】:

    • 如果使用这个,用户 onError() 部分,它仍然能够使另一个新的毕加索图像加载吗?
    • 是的,您可以在 onError() 中进行第二次调用。
    猜你喜欢
    • 2021-08-09
    • 2020-05-02
    • 2021-09-03
    • 2015-07-11
    • 2016-03-12
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    相关资源
    最近更新 更多