【发布时间】:2023-04-10 22:35:01
【问题描述】:
我需要将背景图片添加到 ListView。通常我会打电话给listview.setBackground(myImage)。但是图像来自服务器,所以我需要使用 Picasso 将图像加载到我的 ListView 的背景中。我该怎么做?
【问题讨论】:
标签: android android-listview background-image picasso
我需要将背景图片添加到 ListView。通常我会打电话给listview.setBackground(myImage)。但是图像来自服务器,所以我需要使用 Picasso 将图像加载到我的 ListView 的背景中。我该怎么做?
【问题讨论】:
标签: android android-listview background-image picasso
定义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);
【讨论】:
onBitmapLoaded。有没有办法解决这个问题?我希望能够调整大小。
resize 时,在这两个示例中都调用了onBitmapLoaded。我调查了这个问题,发现this SO question 似乎很相关。希望这会有所帮助