Android Picasso在加载到imageView之前检查图像URL是否存在

Sha*_*n.Y 3 android android-imageview picasso

我目前正在使用具有数据绑定工具的RecyclerView,以从从API获取的url列表(/images/slider/my/myImage.jpg)中加载Image。

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

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

我要实现的是:

if(Image Link exist){
//Load Image, Picasso.with.................
} else {
//Use Dummy Photo, Picasso.with..................
}
Run Code Online (Sandbox Code Playgroud)

[编辑]因此,现在我知道,如果路径不存在,我可以使用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??
Run Code Online (Sandbox Code Playgroud)

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

Rid*_*lly 6

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

Picasso.get()
    .load(url)
    .placeholder(R.drawable.user_placeholder)
    .error(R.drawable.user_placeholder_error)
    .into(imageView);
Run Code Online (Sandbox Code Playgroud)

因此,如果您要归档的只是显示一些错误图像,则在加载不起作用时,这就是您所需要的。


Gok*_* KP 4

您可以使用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...
         }
    });
Run Code Online (Sandbox Code Playgroud)