我使用piccaso 2.5.2并且在我的gradle中有okhttp 2.4.0和okhttp-urlconnection 2.4.0。 ImageView是零件自定义列表项布局。错误是ImageView
中没有任何内容。它仅针对列表的第一项发生。该列表用于填充SwipeFlingAdapterView
,类似于ListView
。 SwipeFlingAdapterView
来自此库https://github.com/Diolor/Swipecards
好的,这是我的代码。
Picasso.with(mActivity)
.load(url)
.resize(540, 720)
.centerCrop()
.into(vh.iv_profile);
xml文件中的 ImageView
。
<ImageView
android:id="@+id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:background="@android:color/white"/>
上面的代码不起作用,所以我尝试用这个来记录错误。
Picasso picasso = new Picasso.Builder(mActivity).listener(new Picasso.Listener() {
@Override public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
exception.printStackTrace();
Log.e("Picasso","description",exception);
}
}).build();
picasso.load(url)
.resize(540, 720)
.centerCrop()
.into(vh.iv_profile);
它没有显示错误。它甚至没有进入onImageLoadFailed
。所以,我尝试其他方式。
picasso.load(url)
.resize(540, 720)
.centerCrop()
.into(vh.iv_profile, new Callback() {
@Override
public void onSuccess() {
if(vh.iv_profile.getHeight() == 0){
vh.iv_profile.setImageDrawable(mActivity.getResources().getDrawable(R.drawable.img_default));
Toast.makeText(mActivity, "we get here", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError() {
}
});
在回调中 OnSuccess
,我甚至无法再从drawable中设置Image。如果我在使用picasso.load之前设置Drawable
,我可以成功设置它。我还尝试在没有.centerCrop()
的情况下使用它。它不起作用。
这是最终的代码。
try {
Picasso.with(mActivity).load(url).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
Log.i("picasso error", "bitmap loaded");
if (bitmap != null) {
vh.iv_profile.setImageBitmap(bitmap);
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Log.i("picasso error", width + ", " + height);
}
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
}catch(Exception e){
Log.i("picasso error", "exception");
}
onBitmapLoaded
,我得到一个宽度和高度为243的位图,但它没有出现在ImageView中。
请帮忙!