2012-07-26 25 views
12

Quando si gonfiano le visualizzazioni per un listView, è meglio avere tutte le textView senza Android: il testo nel file .xml e quanto influisce sulla velocità? Che dire di ViewStub, sarebbe ancora più veloce?Caricamento più veloce di ListView, più veloce del metodo Viewholder

Quando si gonfia un LinearLayout con 8 textViews senza android: testo e con android: text = "@ string/abc", cambia qualcosa? nota che sto riutilizzando le visualizzazioni, quindi forse solo 10 si gonfiano e poi riutilizzati non lo so.

sto sviluppando su uno ZTE Blade, così that'a singola CPU 600Mhz e non un quad core ...

+1

se aumenti l'altezza della tua riga, Android deve disegnare meno linee ed è PIÙ VELOCE, anche tu puoi giustificare dicendo che le persone con le dita grandi possono selezionare più facilmente le righe :) – max4ever

risposta

8

Puoi provare questo, non sono sicuro se accelera, ma dagli Un colpo.

Gonfia il layout in un thread in background.

View getView(int position, View convertView, ...) { 
    View v; 
    if (convertView == null) { 
     Start a background thread to inflate your linearLayout. 
     Pass item data and view 'v' to it. 

     v = inflate a simple dummy textview; 
     return v; 
    } 
    set normal stuff to convertview here. 
    return convertView ; 
} 

Nel thread in background,

  • gonfiare il LinearLayout in 'v'
  • Impostare tutti i dati.
  • Quindi annullare la vista v.

    v.postInvalidate(); 
    
+0

non riesco a farlo funzionare, v.postInvalidate() non fa nulla – max4ever

+0

Ho aggiornato la mia risposta con l'alternativa .. – Ronnie

+0

l'idea è buona, ma non riesco a farla funzionare, hai un esempio di semplice codice di lavoro da qualche parte? – max4ever

3

Questo è molto utile quando accelerando visualizzazioni elenco, in particolare il bit Vista Titolare: http://developer.android.com/training/improving-layouts/smooth-scrolling.html

Anch'io ho un ZTE Blade, sono lenti, ma le app che funzionano bene funzionano sui telefoni 'normali' :)

+0

sì Sto usando View Holder, ero mi chiedo se il gonfiaggio abbia avuto qualche influenza – max4ever

+0

Non penso che lo faccia, ma se i tuoi oggetti di riga hanno un sacco di widget allora rallenterà tutto un po '. Stai cercando di migliorare la velocità di scorrimento? –

+0

anche se uso un adattatore la mia app si blocca per alcuni secondi dopo il ritorno di Ajax e riempio l'elenco con 40 righe, e sto usando una scheda Samsung Galaxy, non riesco a capire come ottimizzare di più – max4ever

3

Se si sta sostituendo il testo nelle textviews ogni caso, allora non si dovrebbe preoccuparsi di popolandoli all'interno del XML.

Un vero killer per prestazioni che è allettante da fare all'interno della semplice visualizzazione degli elenchi è nidificato linearlayouts. Con un po 'di lavoro qualsiasi albero linearlayout potrebbe essere sostituito con un relativelayout.

Assicurati di non utilizzare findViewById all'esterno del blocco if (convertView == null) {utilizzando lo stile ViewHolder o semplicemente impostando view.setTag (R.id.resId, findViewById (R.id.resID))

Nei commenti è stato menzionato un ritardo durante il ritorno dall'async. Assicurati di non ricaricare il tavolo dopo ogni voce. Effettua un aggiornamento collettivo dell'origine dati e quindi ricarica la tabella.