2013-03-25 12 views
19

Non riesco a trovare in nessuna fonte davvero credibile che spieghi cos'è LazyList. Chiunque?Cos'è LazyList?

risposta

37

Lazy List è il caricamento lazy delle immagini dalla sd-card o dal server utilizzando gli URL. È come su richiesta il caricamento delle immagini.

Le immagini possono essere memorizzate nella cache sd-card o nella memoria del telefono. Url è considerato la chiave. Se la chiave è presente nella sd-card, visualizzare le immagini da sd-card altrimenti visualizzare l'immagine scaricando dal server e memorizzarla nella stessa posizione. Il limite della cache può essere impostato. Puoi anche scegliere la tua posizione per memorizzare le immagini nella cache. La cache può anche essere cancellata.

Anziché l'utente che attende il download di immagini di grandi dimensioni e quindi la visualizzazione di elenchi pigri, carica le immagini su richiesta. Poiché le immagini sono memorizzate nella cache, puoi visualizzare le immagini offline.

https://github.com/thest1/LazyList. Lista pigro

Nella tua GetView

imageLoader.DisplayImage(imageurl, imageview); 

metodo ImageLoader display

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); 
    } 
    } 

Un'alternativa Lazy List è universale Loader Immagine

https://github.com/nostra13/Android-Universal-Image-Loader. È basato su Lazy List (funziona sullo stesso principio). Ma ha molte altre configurazioni.Preferirei usare **** Universal Image Loader **** coz che ti offre più opzioni di configurazione. È possibile visualizzare un'immagine di errore se il downlaod non è riuscito. Può visualizzare immagini con angoli arrotondati. Può memorizzare nella cache su disco o memoria. Può comprimere l'immagine

nella vostra abitudine adattatore costruttore

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(); 

Nella tua GetView()

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

È possibile configurare con le altre opzioni in base alle proprie esigenze.

Insieme al caricamento lazy/Universal Image Loader è possibile visualizzare il supporto per scorrimento fluido e prestazioni. http://developer.android.com/training/improving-layouts/smooth-scrolling.html.

+0

Ehi, raghu, non sono in grado di recuperare immagini da uri locali puoi aiutare per favore ?? http: //stackoverflow.com/questions/20109034/lazy-list-fetching-images-from-sdcard-local-url –

+0

great spiegazione, quindi Lazy list è simile a Picasso o Glide? – Fshamri

+1

@ user2198400 quelli sono librerie di memorizzazione immagini. Sì, aiutano nel caricamento lento. Leggi anche il meccanismo di riciclo listview. – Raghunandan

5

Penso che questo sia il contrario. AFAIK, Lazy Loading è la definizione, in cui si caricano effettivamente i dati solo quando ne avete bisogno, ed è una buona pratica di progettazione.

Quindi credo che lo stesso valga per questo, solo che questa volta si sta riferendo alla Vista elenco.

Se mi sbaglio, per favore correggimi.

2

Il miglior esempio di elenco pigro è le notifiche, i messaggi, le richieste di Facebook. quando si scorre, i dati verranno caricati.

9

AFAIK, ti spiegherò con l'esempio Se l'elenco contiene molte immagini con Testo, ci vorrà del tempo perché il tuo elenco venga caricato perché è necessario scaricare le immagini e devi popolarle nell'elenco . Supponiamo che il tuo elenco contenga 100 immagini. Ci vorrà molto tempo per scaricare ogni immagine e mostrarla come un elenco. Per fare in modo che l'utente attenda che le immagini vengano caricate non è facile da usare. quindi Cosa dobbiamo fare. A questo punto del tempo la lista pigra entra in scena. È l'idea che permette di caricare le immagini sullo sfondo e mostrare il testo mentre intendi.

Tutti sanno che listview ricicla le sue viste per ogni vista. se la tua listview contiene 40 elemt, listview non allocherà memoria per 40 elementi invece allocerà memoria per gli elementi visibili, cioè puoi vedere solo 10 elementi alla volta. quindi listview assegnerà una memoria di 10 oggetti.

Quindi, se mai si scorre la vista, la vista verrà aggiornata. a causa di ciò perderai il tuo riferimento alle immagini e avrai bisogno di scaricarle. per evitare ciò, il caching entra in scena.

Questo esempio è basato sulla mia conoscenza in listview, non sto dicendo che sia corretto. Potrebbe esserci un errore nella risposta, se qualche corpo trova sentirsi libero di informarmi.