2017-09-20 1 views
0

Also habe ich die Größe von "parsedPhooStrings" überprüft und es ist deutlich größer als 1. Allerdings wird nur ein Bild mit dem folgenden Code angezeigt. Ich bin mir nicht sicher, was passiert.Picasso lädt nur ein Bild

for (int i = 0; i < parsedPhotoStrings.size(); i++) { 
        String photoUrl = createPlacePhotosUrl(parsedPhotoStrings.get(i)); 
        ImageView imageView = new ImageView(MarkerActivity.this); 
        Picasso.with(MarkerActivity.this).load(photoUrl).resize(width, 0).into(imageView); 
        photoLayout.addView(imageView); 
       } 

EDIT:

Mehrere Fotos zeigen! Ich habe meine Ausrichtung des Layouts übersehen. Jedoch wird der Cache zu löschen noch nicht einmal nach .netWorkPolicy (NetWorkPolicy_CLEAR_CACHE) und .memoryPolicy (MemoryPolicy.CLEAR_CACHE)

EDIT:

for (int i = 0; i < parsedPhotoStrings.size(); i++) { 
       String photoUrl = createPlacePhotosUrl(parsedPhotoStrings.get(i)); 
       ImageView imageView = new ImageView(MarkerActivity.this); 
       photoLayout.addView(imageView); 
       Picasso.with(MarkerActivity.this).load(photoUrl) 
         .networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE) 
         .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE) 
         .resize(width, 0) 
         .into(imageView); 
       imageView.setImageResource(0); 
       imageView.setImageDrawable(null); 
       Picasso.with(MarkerActivity.this).invalidate(photoUrl); 
      } 

Ich habe so viele Dinge versucht, den Cache zu löschen. Hat immer noch nichts funktioniert. Jede Hilfe wird geschätzt!

+0

versuchen Sie dies, alteast Sie würden wissen, wenn es einen Fehler gab 'Picasso.with (getContext()) .load (URL) .into (Bildansicht, neue com.squareup.picasso.Rückruf() { @Override public void onSuccess() { } @Override public void onError() { } }); ' –

Antwort

0

versuchen diese Verwendung .memoryPolicy(MemoryPolicy.NO_CACHE)

Picasso.with(MarkerActivity.this).load(photoUrl).resize(width, 0).memoryPolicy(MemoryPolicy.NO_CACHE).into(imageView); 

Beispielcode

for (int i = 0; i < parsedPhotoStrings.size(); i++) { 
    String photoUrl = createPlacePhotosUrl(parsedPhotoStrings.get(i)); 
    ImageView imageView = new ImageView(MarkerActivity.this); 
    photoLayout.addView(imageView); 
    Picasso.with(MarkerActivity.this).load(photoUrl).resize(width, 0).memoryPolicy(MemoryPolicy.NO_CACHE).into(imageView); 

} 
1

einfach die Reihenfolge umkehren.

Fügen Sie die ImageView dann Bild Last:

Ändern Sie dies in

for (int i = 0; i < parsedPhotoStrings.size(); i++) { 
    String photoUrl = createPlacePhotosUrl(parsedPhotoStrings.get(i)); 
    ImageView imageView = new ImageView(MarkerActivity.this); 
    Picasso.with(MarkerActivity.this).load(photoUrl).resize(width, 0).into(imageView); 
    photoLayout.addView(imageView); 
} 

Caching Dieser

for (int i = 0; i < parsedPhotoStrings.size(); i++) { 
    String photoUrl = createPlacePhotosUrl(parsedPhotoStrings.get(i)); 
    ImageView imageView = new ImageView(MarkerActivity.this); 
    photoLayout.addView(imageView);      
    Picasso.with(MarkerActivity.this).load(photoUrl).memoryPolicy(MemoryPolicy.NO_CACHE).networkPolicy(NetworkPolicy.NO_CACHE).resize(width, 0).into(imageView); 
} 
+0

Wenn Sie diesen Code hinzufügen, ich andere Bilder für einen flüchtigen Moment sehen . In einer Sekunde wird das neueste Bild nur angezeigt. – user3131097

+0

versuchen Sie, diese Zeilen umzukehren photoLayout.addView (imageView); Picasso.with (MarkerActivity.this) .load (fotoUrl) .memoryPolicy (MemoryPolicy.NO_CACHE) .networkPolicy (NetworkPolicy.NO_CACHE) .resize (width, 0) .into (imageView); – Anil

0

Es ist fällig. Sie haben dies zu implementieren: -

Picasso.with(YourActivity.this)            
.load(childjson.getString("your_string")) 
.networkPolicy(NetworkPolicy.NO_CACHE) 
.memoryPolicy(MemoryPolicy.NO_CACHE) 
.skipMemoryCache() 
.into(yourImagePreview); 

Und stellen Sie sicher, mit Abhängigkeit von picasso in build.gradle zu ändern: -

compile "com.squareup.picasso:picasso:2.5.2" 

Dies wird kein Speicher-Caching unterstützen. Happy Coding!

+0

skipMemoryCache() ist veraltet. In meinem Fall funktioniert das nicht. Der Android-Monitor erhöht den Cache der App, wenn mehr Bilder geladen werden, was zu einer OutOfMemoryException führt. Zusätzlich, nur ein Bild, das endgültige Bild wird noch angezeigt? Könnte es meine Schleifenlogik sein? – user3131097

+0

ja! Sie können versuchen, wenn Bedingung, nur überprüfen, ob (imageview! = null). Hoffe, es kann für Sie arbeiten –

+0

Ich habe es versucht. Ich habe auch eine PicassoUtilities-Klasse erstellt, um auf den Cache zuzugreifen, und ich lösche den Cache, nachdem ich das Bild geladen und dem Layout hinzugefügt habe. Immer noch nicht das Problem behoben. Ist es möglich, dass etwas anderes zwischengespeichert wird? – user3131097

0

Überprüfen Sie zuerst, ob das Image Caching ht eurl ist, wenn ja, fügen Sie den Code hinzu, um die URL ungültig zu machen(). Dies wird den vorherigen Cache entfernen.

Picasso.with(this).invalidate(url); 

Zweite Prüfung für das cachcing mechanism.This Code Netzwerk wird kein Caching für die Bilder

Picasso.networkPolicy(NetworkUtils.isConnected(this) ? 
         NetworkPolicy.NO_CACHE : NetworkPolicy.OFFLINE) 

Also Sie Code machen sollte wie sein

for (int i = 0; i < parsedPhotoStrings.size(); i++) { 
     String photoUrl =createPlacePhotosUrl(parsedPhotoStrings.get(i)); 
     Picasso.with(this).invalidate(url); 

     ImageView imageView = new ImageView(MarkerActivity.this); 
     photoLayout.addView(imageView); 

     Picasso.with(MarkerActivity.this) 
       .load(photoUrl) 
       .networkPolicy(NetworkUtils.isConnected(this) ? 
         NetworkPolicy.NO_CACHE : NetworkPolicy.OFFLINE) 
       .memoryPolicy(MemoryPolicy.NO_CACHE); 
       .resize(width, 0) 
       .into(imageView); 
} 

auch diese Code, den Sie zu unterstützen brauchen Picasso Version 2.5. +

compile 'com.squareup.picasso:picasso:2.5.2' 
+0

NetworkUtils kann nicht aufgelöst werden. Ich habe die Gradle-Abhängigkeits-Version überprüft und füge 2.5.2 hinzu. Betrachte ich etwas wirklich Einfaches? – user3131097

+0

Ich habe Sie nicht bekommen.Voraus welche Version Sie benutzt haben? – Anonymous

+0

Ich benutze 'com.squareup.picasso: picasso: 2.5.2', also sollte es kein Problem geben. – user3131097

Verwandte Themen