我需要将一张背景图片添加到ListView中。通常情况下,我会调用listview.setBackground(myImage)
。但这张图片是从服务器上获取的,因此我需要使用Picasso将图片加载到我的ListView的背景中。我该怎么做?
我需要将一张背景图片添加到ListView中。通常情况下,我会调用listview.setBackground(myImage)
。但这张图片是从服务器上获取的,因此我需要使用Picasso将图片加载到我的ListView的背景中。我该怎么做?
定义一个匿名子类com.squareup.picasso.Target
Picasso.with(yourContext)
.load(yourImageUri)
.into(new Target() {
@Override
@TargetApi(16)
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
yourListView.setBackgroundDrawable(new BitmapDrawable(bitmap));
} else {
yourListView.setBackground(new BitmapDrawable(getResources(), bitmap));
}
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
// use error drawable if desired
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
// use placeholder drawable if desired
}
});
继承 ListView
并实现 com.squareup.picasso.Target
public class PicassoListView extends ListView implements Target {
public PicassoListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public PicassoListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
@TargetApi(16)
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
setBackgroundDrawable(new BitmapDrawable(bitmap));
} else {
setBackground(new BitmapDrawable(getResources(), bitmap));
}
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
// use error drawable if desired
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
// use placeholder drawable if desired
}
}
这让你可以做到这一点:
Picasso.with(yourContext)
.load(yourImageUri)
.into(yourListView);
resize
时,两个示例中都会调用onBitmapLoaded
。我研究了一下这个问题,并找到了这个 SO 问题,它似乎是相关的。希望这可以帮助你。 - bmat