2016-11-04 1 views
0

Ich möchte Bitmap vom Server mit Glide laden. Wenn es Erfolg ist, dann lege es in meine ImageView und füge es dann zu meiner ArrayList hinzu. Wenn es fehlschlägt (kaputte URL, kein Internet usw.), dann setze ImageView auf mein Standardbild. Aber Glides Zuhörer funktioniert gar nicht, auch LogCat zeigt "onException" und "onResourceReady" überhaupt nicht. Was ist falsch an meinem Code?Glide: Lade URL als Bitmap funktioniert nicht

Glide.with(activity.getApplicationContext()) 
     .load(MainActivity.URL_SERVER + "/asset/" + imageUrl.getString(i)) 
     .signature(new StringSignature(String.valueOf(System.currentTimeMillis()))) 
     .listener(new RequestListener<String, GlideDrawable>() { 
      @Override 
      public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
       ivImage.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.noimage)); 
       return false; 
      } 
      @Override 
      public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
       ivImage.setImageDrawable(resource); 
       imageLoadedBitmap.add(((GlideBitmapDrawable) resource).getBitmap()); 
       return false; 
      } 
     }); 

Antwort

2

Ab jetzt nichts in dieser Methode Kette tatsächlich den Bildladevorgang auslöst. Sie könnten am Ende .into(ivImage) verwenden und Listener nur zum Hinzufügen von Bitmap zu Array verwenden. Oder Sie könnten .preload() für mehr Anpassung verwenden. Verwenden Sie auch .error(R.drawable.noimage) für Fehlerbild.

Das Speichern von Bitmaps in einem Array sieht jedoch wie eine schlechte Idee aus. Wenn Sie Bilder in eine Liste laden, setzen Sie glide call in Ihren Adapter und lassen glide sich um das Fangen kümmern.

+0

Danke, '. Preload()' ist, was ich brauche .. – zihadrizkyef

0

einfach diese Codezeile in Ihrem Adapter verwenden:

Glide.with(context).load(url).error(R.drawable.noimage).centerCrop().crossFade().into(ivImage); 
+0

Wie kann ich die geladene Bitmap zu meiner ArrayList hinzufügen? – zihadrizkyef

+0

@zihadrizkyef Verwenden Sie diesen Code in Ihrem Adapter –

0

Sie können Ihren Standardplatzhalter hinzufügen, bis Bilder geladen werden.

Glide.with(getActivity()) 
    load(backgroundImage).placeholder(R.drawable.no_images); 

Sie können auch verschiedene Platzhalter hinzufügen, wenn Bilder in Fehler Tag konnte nicht geladen werden.

Glide.with(getActivity()).load(backgroundImage).placeholder(R.drawable.no_images).error(R.drawable.no_images); 
+0

wie Sie die Bitmap zu ArrayList – zihadrizkyef

+0

verwenden SimpleTarget-Klasse in Glide wird es Ihnen Bilder in Bitmap-Format zurückgeben. – QuokMoon