我正在实现基于这个教程的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项包含文本和图像,为了加载图像,我使用了Picasso。
getViewAt 实现:
ListView项包含文本和图像,为了加载图像,我使用了Picasso。
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;
}
当图片加载时,它会破坏布局。
可能的问题是什么?或者我做错了什么?
不加载图片的情况:
在加载图片后的样子:
更新:
如果我只添加几个嵌套的远程视图(都从一个布局中膨胀),同样的问题也会发生。
更新2:
.get()
之前,请调用.fetch()
,这样对于同一张图片(当用户上下滚动时)的后续调用就足够快了。 - ievgenwith(context)
已被弃用。请用Picasso.get().load(/*URL*/).get()
替换。注意这两个get
是不同的。 - suhas_sm