Android 毕加索-将图像加载到适配器中的imagebutton中
我想将图像加载到适配器的ImageButton中,这有时不起作用。。。我有一个有4个条目的适配器,有时候,按钮图像只加载了2次而不是4次。始终仅在第一次创建适配器时。。。在屏幕旋转后,一切正常。。。但在第一个显示器上,它不能正常工作 具有4行的适配器只在第一次创建时调用了2次prepare和2次load 以下是我的适配器的getView: 我的毕加索工具函数我在这个类中有一些额外的函数:Android 毕加索-将图像加载到适配器中的imagebutton中,android,button,imagebutton,picasso,Android,Button,Imagebutton,Picasso,我想将图像加载到适配器的ImageButton中,这有时不起作用。。。我有一个有4个条目的适配器,有时候,按钮图像只加载了2次而不是4次。始终仅在第一次创建适配器时。。。在屏幕旋转后,一切正常。。。但在第一个显示器上,它不能正常工作 具有4行的适配器只在第一次创建时调用了2次prepare和2次load 以下是我的适配器的getView: 我的毕加索工具函数我在这个类中有一些额外的函数: public static Picasso getPicasso() { if (picasso =
public static Picasso getPicasso()
{
if (picasso == null)
picasso = new Picasso.Builder(MainApp.getAppContext()).memoryCache(getCache()).build();
return picasso;
}
使用目标
private Target loadtarget;
在getView中编写此代码
if (loadtarget == null)
loadtarget = new Target() {
@Override
public void onBitmapFailed(Drawable arg0) {
}
@Override
public void onBitmapLoaded(Bitmap bitmap, LoadedFrom from) {
handleLoadedBitmap(bitmap);
}
@Override
public void onPrepareLoad(Drawable arg0) {
}
};
try {
Picasso.with(this).load(url).into(loadtarget);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
}
public void handleLoadedBitmap(Bitmap b) {
BitmapDrawable bdrawable = new BitmapDrawable(b);
imageButton.setBackgroundDrawable(bdrawable);
}
希望这对您有所帮助:使用目标
private Target loadtarget;
在getView中编写此代码
if (loadtarget == null)
loadtarget = new Target() {
@Override
public void onBitmapFailed(Drawable arg0) {
}
@Override
public void onBitmapLoaded(Bitmap bitmap, LoadedFrom from) {
handleLoadedBitmap(bitmap);
}
@Override
public void onPrepareLoad(Drawable arg0) {
}
};
try {
Picasso.with(this).load(url).into(loadtarget);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
}
public void handleLoadedBitmap(Bitmap b) {
BitmapDrawable bdrawable = new BitmapDrawable(b);
imageButton.setBackgroundDrawable(bdrawable);
}
希望这能对您有所帮助:您能发布完整的适配器代码以及在getView中初始化btLink的位置吗?您真的需要使用毕加索吗?因为我有一个很好的解决方案,没有使用毕加索。我有一个基于图像的应用程序,因此,因为我仍然会遇到一些OOM错误,请尝试在任何可能的地方使用缓存。。。无论如何,已经给出的答案是解决方案。。。只是不再考虑这个小细节。你能发布完整的适配器代码和在getView中初始化btLink的位置吗?你真的需要使用毕加索吗?因为我有一个很好的解决方案,没有使用毕加索。我有一个基于图像的应用程序,因此,因为我仍然会遇到一些OOM错误,请尝试在任何可能的地方使用缓存。。。无论如何,已经给出的答案是解决方案。。。只是不再考虑这个小细节…现在你说,我几个月前就已经读过了。。。该目标仅适用于显式对象。。。我只是不记得了,直到现在。。。谢谢,我会试着检查一下。。。只有一件事,在适配器中,我不能按你建议的方式来做。。。我现在只需创建目标对象并将其设置为按钮的标记。。。然后检查这个标签,得到相应的目标对象…现在你说,我几个月前已经读过了。。。该目标仅适用于显式对象。。。我只是不记得了,直到现在。。。谢谢,我会试着检查一下。。。只有一件事,在适配器中,我不能按你建议的方式来做。。。我现在只需创建目标对象并将其设置为按钮的标记。。。然后检查此标记以获取相应的目标对象。。。