Ich habe eine App zum Laden von Bildern aus dem Internet in Karten erstellt. Ich benutze Recyclerview zum Auflisten von Zwecken. Zum Herunterladen von Bildern habe ich Picasso, Universal-Image-Downloader und andere benutzerdefinierte Methoden ausprobiert, aber überall habe ich dieses Problem:
Immer wenn ich nach unten und oben blättere, werden die Bilder in der Bildansicht neu geladen. Ich habe sogar eine Bedingung behalten, um zu überprüfen, ob die Bildansicht ein Bild enthält, aber das scheint auch nicht zu funktionieren oder mein Code ist möglicherweise fehlerhaft. Aber ich kann keine Lösung für dieses Problem finden. Unten habe ich die Funktion 'onBindViewHolder' meines Codes angehängt, die ich für den problematischen Teil halte. Hier sind Bilder eine String-Arraylist mit Bild-URLs.
%Vor% Zuerst gibt es einen Fehler in Ihrem Code - Sie müssen die Bedingung aus onBindViewHolder
entfernen. Alle ImageView
Instanzen müssen jedes Mal aktualisiert werden, wenn sie angezeigt werden.
Der Ladevorgang :
Das Problem ist, dass Sie wahrscheinlich keinen Cache verwenden (in-memory oder disk-basiert). Ich würde nicht viel darüber sprechen, das Zwischenspeichern von Bildern in Sammlungsansichten ist ein wirklich häufiges Problem und ich bin mir sicher, dass eine schnelle StackOverflow-Suche Ihnen viele Ergebnisse liefern wird.
Ganz besonders - Universal image hat standardmäßig kein Caching aktiviert Sie können es auf diese Weise einschalten.
%Vor%Oder Sie können es global für Ihre Anwendung festlegen, überprüfen Sie einfach die Dokumente.
Sie können .fit()
mit Picasso verwenden. Hoffnung, die dein Problem löst
Wenn Sie keinen Cache verwenden möchten, können Sie setItemViewCacheSize (size) verwenden und die Größe angeben, die Sie nicht neu laden möchten. Das ist es. Recyclerview Version 24.0.0
Tags und Links android android-recyclerview