我正在玩Picasso库进行图像加载,但我遇到了一个问题.当图像无法加载时,我想隐藏视图而不是加载默认图像.我从源代码中注意到,添加侦听器的唯一方法是来自构建器,但是当图像无法加载时,永远不会调用error方法.有人对此有经验吗?
iv = (ImageView) findViewById(R.id.imageView);
Picasso.Builder builder = new Picasso.Builder(getApplicationContext());
builder.listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso arg0, String arg1) {
Log.e("Picasso Error", "Errored out, hiding view");
iv.setVisibility(View.GONE);
}
});
Picasso pic = builder.build();
pic.load("thisshouldbreak.jpg").into(iv);
Run Code Online (Sandbox Code Playgroud)
dnk*_*tso 52
Picasso 2.0允许您将回调附加到请求中.
https://github.com/square/picasso
您正在使用的回调是"全局"侦听器,它可以帮助您调试由于网络负载而可能发生的错误.
load(url).into(view, new Callback() {...});在Picasso 2.0中使用.
cancelRequest(target)如果您使用的话,请记得调用Callback.
小智 17
我的例子:
Picasso picasso = new Picasso.Builder(parent.getContext())
.listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
//Here your log
}
})
.build();
picasso.load(shopModel.getShopImg())
.fit()
.into(viewHolder.shopImg);
Run Code Online (Sandbox Code Playgroud)
您可以尝试添加"全局"侦听器.
// create Picasso.Builder object
Picasso.Builder picassoBuilder = new Picasso.Builder(this);
picassoBuilder.listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
Log.e("PICASSO", uri.toString(), exception);
}
});
// Picasso.Builder creates the Picasso object to do the actual requests
Picasso picasso = picassoBuilder.build();
try {
Picasso.setSingletonInstance(picasso);
} catch (IllegalStateException ignored) {
// Picasso instance was already set
// cannot set it after Picasso.with(Context) was already in use
}
Run Code Online (Sandbox Code Playgroud)
任何后续调用都Picasso.with(Context context)将返回连接到侦听器的实例,因此将记录所有失败.
请注意,您需要尽快致电setSingletonInstance,例如在申请表中onCreate.
PS Code从这里采用 - 用Picasso.Builder定制Picasso
| 归档时间: |
|
| 查看次数: |
28934 次 |
| 最近记录: |