1

Ich bin ein einfaches Widget auf meinen Android-App auf Google "StackWidget" Probe Entwicklung: https://android.googlesource.com/platform/development/+/master/samples/StackWidget/src/com/example/android/stackwidget/StackWidgetService.javaWidget - Bild lädt von URL in Remote View

I glide Bildbibliothek bin mit und ich versuche zu füllen eine ImageView für die getViewAt-Methode der StackWidgetService-Klasse, die RemoteViewsService erweitert. Ich mache so etwas wie diese, aber es funktioniert nicht:

Handler uiHandler = new Handler(Looper.getMainLooper()); 
    uiHandler.post(() -> 
      Glide.with(context) 
      .asBitmap() 
      .load(widgetItems.get(position).image_url) 
      .into(new SimpleTarget<Bitmap>(512, 512) { 
       @Override 
       public void onResourceReady(Bitmap bitmap, Transition transition) { 
        rv.setImageViewBitmap(R.id.widget_item_image, bitmap); 
       } 
      })); 

Was ist der richtige und bester Weg, das Laden von Bildern von einer URL eine Remote von einem Android-Widget zu füllen?

+1

Tun Sie es nicht asynchron ('onResourceReady()'). Wenn Sie die 'RemoteViews' zurückgeben, müssen diese vollständig ausgefüllt werden. – CommonsWare

Antwort

0

Sie müssen es nur synchron tun. Dies scheint gut zu funktionieren:

try { 
     Bitmap bitmap = Glide.with(context) 
       .asBitmap() 
       .load(widgetItems.get(position).image_url) 
       .submit(512, 512) 
       .get(); 

     rv.setImageViewBitmap(R.id.widget_item_image, bitmap); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    }