2013-03-25 3 views
19

Ich kann keine wirklich glaubwürdige Quelle finden, die erklärt, was LazyList ist. Jemand?Was ist LazyList?

Antwort

37

Lazy Liste ist Lazy Laden von Bildern von SD-Karte oder vom Server mit URLs. Es ist wie beim Laden von Bildern.

Bilder können im lokalen SD-Karten- oder Telefonspeicher zwischengespeichert werden. Url gilt als der Schlüssel. Wenn der Schlüssel in SD-Karte vorhanden ist, zeigen Sie Bilder von SD-Karte sonst Bild durch Herunterladen von Server und Zwischenspeichern der gleichen an Speicherort Ihrer Wahl. Das Cache-Limit kann gesetzt werden. Sie können auch einen eigenen Speicherort zum Zwischenspeichern von Bildern auswählen. Cache kann auch gelöscht werden.

Anstatt dass der Benutzer darauf wartet, große Bilder herunterzuladen und dann die faule Liste anzuzeigen, werden Bilder auf Anforderung geladen. Da Bilder zwischengespeichert werden, können Sie Bilder offline anzeigen.

https://github.com/thest1/LazyList. Faule Liste

In Ihrem GetView

imageLoader.DisplayImage(imageurl, imageview); 

Imageloader Anzeigemethode

public void DisplayImage(String url, ImageView imageView) //url and imageview as parameters 
    { 
    imageViews.put(imageView, url); 
    Bitmap bitmap=memoryCache.get(url); //get image from cache using url as key 
    if(bitmap!=null)   //if image exists 
     imageView.setImageBitmap(bitmap); //dispaly iamge 
    else //downlaod image and dispaly. add to cache. 
    { 
     queuePhoto(url, imageView); 
     imageView.setImageResource(stub_id); 
    } 
    } 

Eine Alternative zu faul Liste ist Universal-Image Loader

https://github.com/nostra13/Android-Universal-Image-Loader. Es basiert auf Lazy List (funktioniert nach dem gleichen Prinzip). Aber es hat viele andere Konfigurationen.Ich würde bevorzugen, **** Universal Image Loader **** coz zu verwenden, gibt es Ihnen mehr Konfigurationsoptionen. Sie können ein Fehlerbild anzeigen, wenn der Download fehlgeschlagen ist. Kann Bilder mit abgerundeten Ecken anzeigen. Kann auf CD oder Speicher zwischenspeichern. Kann Bild komprimieren.

in Ihrem benutzerdefinierten Adapter Konstruktor

File cacheDir = StorageUtils.getOwnCacheDirectory(a, "your folder"); 

// Get singletone instance of ImageLoader 
imageLoader = ImageLoader.getInstance(); 
// Create configuration for ImageLoader (all options are optional) 
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(a) 
      // You can pass your own memory cache implementation 
     .discCache(new UnlimitedDiscCache(cacheDir)) // You can pass your own disc cache implementation 
     .discCacheFileNameGenerator(new HashCodeFileNameGenerator()) 
     .enableLogging() 
     .build(); 
// Initialize ImageLoader with created configuration. Do it once. 
imageLoader.init(config); 
options = new DisplayImageOptions.Builder() 
.showStubImage(R.drawable.stub_id)//display stub image 
.cacheInMemory() 
.cacheOnDisc() 
.displayer(new RoundedBitmapDisplayer(20)) 
.build(); 

In Ihrem getView()

ImageView image=(ImageView)vi.findViewById(R.id.imageview); 
    imageLoader.displayImage(imageurl, image,options);//provide imageurl, imageview and options 

Sie mit anderen Optionen konfigurieren können an Ihre Bedürfnisse anpassen.

Zusammen mit Lazy Loading/Universal Image Loader können Sie Inhaber für reibungslose Scrolling und Leistung anzeigen. http://developer.android.com/training/improving-layouts/smooth-scrolling.html.

+0

Hey Raghu, ich bin nicht in der Lage, Bilder von lokalen URI holen können Sie bitte helfen? Http: //stackoverflow.com/questions/20109034/lazy-list-fetching-images-from-sdcard-local-url –

+0

groß Erklärung, so Lazy Liste ist ähnlich wie Picasso oder Gleiten? – Fshamri

+1

@ user2198400 das sind Bild-Caching-Bibliotheken. Ja, sie helfen beim faulen Laden. Lesen Sie auch über den Listview-Recycling-Mechanismus. – Raghunandan

5

Ich denke, das ist anders herum. AFAIK, Lazy Loading ist die Definition, in der Sie die Daten nur dann laden, wenn Sie sie brauchen, und es ist eine gute Design-Praxis.

Also glaube ich, dass das gleiche gilt, nur dieses Mal bezieht es sich auf die Listenansicht.

Wenn ich falsch liege, bitte korrigieren Sie mich.

2

Das beste Beispiel für faule Liste ist Facebook Benachrichtigungen, Nachrichten, Anfragen. Wenn Sie blättern, werden die Daten geladen.

9

AFAIK, Ich erkläre Ihnen das Beispiel Wenn Sie viele Bilder mit Text enthalten, dauert es einige Zeit, bis Ihre Liste geladen ist, da Sie Bilder herunterladen müssen und Sie diese in der Liste auffüllen müssen . Angenommen, Ihre Liste enthält 100 Bilder. Es dauert sehr lange, bis jedes Bild heruntergeladen und das Listenelement angezeigt wird. Den Benutzer warten zu lassen, bis die Bilder geladen werden, ist nicht benutzerfreundlich. so was wir tun müssen. Zu diesem Zeitpunkt kommt die faule Liste ins Bild. Es ist die Idee, dass die Bilder im Hintergrund geladen werden und Text währenddessen angezeigt wird.

Jeder weiß, dass listview seine Ansichten für jede Ansicht wiederverwendet. Wenn Ihr Listenansicht 40 Elemente enthält, dann wird Listenansicht keinen Speicher für 40 Elemente zuweisen, stattdessen wird Speicher für die sichtbaren Elemente zugewiesen, d. h. Sie können nur 10 Elemente gleichzeitig sehen. so listview wird 10 Elemente Speicher zuweisen.

Wenn Sie also die Ansicht scrollen, wird die Ansicht aktualisiert. wegen der Sie verlieren Ihre Referenz auf Bilder und Sie müssen sie herunterladen Agian. Um dies zu vermeiden, kommt Caching ins Spiel.

Dieses Beispiel basiert auf meinem Wissen in listview, ich sage nicht, dass dies nur richtig ist. Es könnte in der Antwort falsch sein, wenn irgendein Körper sich frei fühlen würde, mich zu informieren.