Wprowadzam widget z listview na podstawie tego samouczka: http://laaptu.wordpress.com/2013/07/24/populate-appwidget-listview-with-remote-datadata-from-web/ (kod źródłowy: https://github.com/laaptu/appwidget-listview/tree/appwidget-listview2/).Picasso: ładowanie obrazów do widżetu listview
Element ListView zawiera tekst & obraz do załadowania obrazu Używam Picasso.
realizacja 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;
}
Gdy obraz załadowany, to łamie układ.
Jaki może być potencjalny problem? Albo co robię źle?
Bez obrazu ładowania:
Jak to wygląda po załadowaniu obrazu:
UPDATE:
To samo dzieje się, jeśli po prostu dodać kilka zagnieżdżonych widoków zdalnych (wszystkie są zawyżone) jeden układ)
Update2:
zgłosił problem: https://github.com/square/picasso/issues/587
dziwne, problem jest nadal otwarty :) https://github.com/square/picasso/issues/587 –
@ ab.helly tak poprawny. To nie działa w widoku listy, ponieważ Picasso musi oddzwonić do głównego wątku. W zdalnej usłudze widoku listy, twój już wątek w tle.Pracowałem również nad tym, przechowując buforowane bitmapy na mapie i obsługując je w ten sposób. Pierwotnie otrzymałem je za pomocą Picassa i zmieniono rozmiar, aby zapewnić optymalną wydajność. – ngatirauks