2016-11-09 5 views
2

Ich arbeite an meinem ersten App-Widget. Alles ist gut, außer einer Sache. Ich kann nicht herausfinden, wie kann ich Bild in ImageView bei RemoteViewsFactroys Methode getViewAt() mit Glide laden. Ich bekomme immer Fehler, weil ich in MainThread (AppWidgetTarget) laufen muss, aber ich kann nicht neuen Handler (Looper.getMainLooper()) von RemoteViewsFactory aufrufen.Bild mit Glide für AppWidget laden

+0

können Sie dies mit Universal Image Loader erreichen. Möchten Sie das Bild nur mit Glide laden? – Sangeetha

Antwort

0

Glide unterstützt dies durch Bereitstellung der AppWidgetTarget Klasse.

Während Ihr Widget in onUpdate() aktualisieren, erstellen Sie eine neue AppWidgetTarget, übergeben sie die RemoteViews Objekt, die ID des Bildes anzeigen und die appwidgetId und dann gleiten berufen, in fast der gleichen Art und Weise, wie Sie es für einen Imageview in Ihrem App

appWidgetTarget = new AppWidgetTarget(context, rv, R.id.custom_view_image, appWidgetIds); 

    Glide 
      .with(context.getApplicationContext()) // safer! 
      .load(GlideExampleActivity.eatFoodyImages[3]) 
      .asBitmap() 
      .into(appWidgetTarget); 

Beispielcode oben aus dieser wonderful set of glide tutorials genommen. Die Tutorials decken viele praktische Aspekte des Glide-Einsatzes ab.

In ähnlicher Weise wird auch eine NotificationTarget Zielklasse von glide bereitgestellt - sie löst das gleiche Problem, aber für Benachrichtigungen anstelle von appWidgets.