Nell'articolo Multithreading For Performance da Android Developer Blog, convertView
viene utilizzato in Adapter.getItem()
per visualizzare un elenco di ImageView
, che vengono scaricati attraverso HttpRequest.Yet, vedo anche alcuni tutorial Android che non utilizzano il convertView
, e solo gonfiare un nuovo visualizza in Adapter.getItem()
.Android convertView, per usarlo o no?
Mi chiedo quale vantaggio offre convertView
? Come si ricicla la vista utilizzata? Dove è la vista utilizzata nella cache?
Ho fatto questa domanda perché non ho usato convertView
nel mio progetto e voglio sapere il costo per non usarlo. Di seguito è la mia implementazione di una lista di immagini.
Invece di utilizzare convertView
, si gonfia una nuova vista in Adapter.getItem()
. Inoltre, creo una classe wrapper per tenere il personale in ogni elemento di listView
. Una volta che l'immagine è stata scaricata, verrà archiviata come bitmap nella classe wrapper per ogni voce dell'elenco (L'immagine è piccola). In questo modo, posso evitare il doppio download della stessa immagine. E questo evita anche i problemi relativi alle condizioni di gara discussi in Multithreading For Performance. Ma sono ancora un po 'preoccupato, ci sono problemi che non vanno bene usando il mio metodo?
FYI: l'articolo consigliato da @Carl Anderson fornisce dettagli su come convertView funziona nell'adattatore. L'IO di Google di Romain Guy suggerito in questo articolo è un altro buon riferimento.
In una parola, convertView è ottimizzato sia nello spazio che nel tempo. Inoltre, ho abbandonato la mia imageDownloader e uso Picasso che è raccomandato da @CommonsWare. Esso funziona magicamente.