Android 毕加索-将图像加载到适配器中的imagebutton中

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 =

我想将图像加载到适配器的ImageButton中,这有时不起作用。。。我有一个有4个条目的适配器,有时候,按钮图像只加载了2次而不是4次。始终仅在第一次创建适配器时。。。在屏幕旋转后,一切正常。。。但在第一个显示器上,它不能正常工作

具有4行的适配器只在第一次创建时调用了2次prepare和2次load

以下是我的适配器的getView:

我的毕加索工具函数我在这个类中有一些额外的函数:

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错误,请尝试在任何可能的地方使用缓存。。。无论如何,已经给出的答案是解决方案。。。只是不再考虑这个小细节…现在你说,我几个月前就已经读过了。。。该目标仅适用于显式对象。。。我只是不记得了,直到现在。。。谢谢,我会试着检查一下。。。只有一件事,在适配器中,我不能按你建议的方式来做。。。我现在只需创建目标对象并将其设置为按钮的标记。。。然后检查这个标签,得到相应的目标对象…现在你说,我几个月前已经读过了。。。该目标仅适用于显式对象。。。我只是不记得了,直到现在。。。谢谢,我会试着检查一下。。。只有一件事,在适配器中,我不能按你建议的方式来做。。。我现在只需创建目标对象并将其设置为按钮的标记。。。然后检查此标记以获取相应的目标对象。。。