android – Picasso:将图像加载到widget listview

根据本教程,我正在使用listview实现小部件: http://laaptu.wordpress.com/2013/07/24/populate-appwidget-listview-with-remote-datadata-from-web/(源代码https://github.com/laaptu/appwidget-listview/tree/appwidget-listview2/).

ListView项目包含文本&图像,为图像加载我使用毕加索.

getViewAt实现:

public RemoteViews getViewAt(int position) {
    final RemoteViews remoteView = new RemoteViews(context.getPackageName(),R.layout.listview_item);
    ListItem listItem = listItemList.get(position);
    remoteView.setTextViewText(R.id.headline,listItem.headline);
    final String imageUrl = listItem.image;
    handler.post(new Runnable() {
        @Override
        public void run() {
            if (!Utils.isEmpty(imageUrl)) {
                picasso.load(imageUrl)
                        .placeholder(R.drawable.empty_photo)
                        .into(remoteView,R.id.picture,new int[] { appWidgetId });
            }
        }
    });

    return remoteView;
}

当图像加载时,它会打破布局.

什么可能是一个可能的问题?还是我做错了什么?

无图像加载:

图像加载后的外观:

更新:

同样的情况,如果我只是添加一些嵌套的远程视图(所有膨胀从一个布局)

UPDATE2:

报道了一个问题:https://github.com/square/picasso/issues/587

解决方法

在我自己努力之后,我决定阻止后台线程是确定的(与毕加索使用.get()),并能够让我的适配器下面的工作:
@Override
    public RemoteViews getViewAt(int position) {
        DBItem item = list.get(position);
        RemoteViews view = new RemoteViews(context.getPackageName(),R.layout.widget_item);
        try {
            Bitmap b = Picasso.with(context).load(item.getimageUrl()).get();
            view.setimageViewBitmap(R.id.widget_image,b);
        } catch (IOException e) {
            e.printstacktrace();
        }
        view.setTextViewText(R.id.widget_title,item.getTitle());
        return view;
    }

如果你知道图像的大小(如果它总是相同或可以预测的),你可能想要做这样的事情,以减少调整大小的抖动:

@Override
    public RemoteViews getLoadingView() {
        return new RemoteViews(context.getPackageName(),R.layout.v2_widget_item_loading);
    }

表现非常顺利,没有加载的动力,我对结果非常满意.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...