2011-08-17 15 views
8

Sto lavorando su ListView. Voglio sapere quando si chiama esattamente getView(). Viene chiamato una volta impostato l'adattatore? E la linea accanto a "setting adapter" viene chiamata una volta che il metodo getView() completa l'esecuzione?Quando viene chiamato il metodo getView() di ListView?

Si prega di aiutarmi a sapere quale linea viene eseguita una volta che il getView() termina l'esecuzione.

Sarebbe di grande aiuto per me.

Grazie in anticipo, Vaishnvai

+0

puoi pubblicare il tuo codice? –

risposta

11

getView() è chiamato per ogni elemento della lista si passa alla scheda. Viene chiamato quando si imposta l'adattatore. Quando getView() termina la riga successiva dopo la chiamata a setAdapter(myAdapter). Per eseguire il debug di getView() è necessario attivare un punto di interruzione su di esso perché non è possibile passare in getView() da setAdapter(myAdapter). getView() viene chiamato anche dopo notifyDataSetChanged() e sullo scorrimento.

+0

Grazie per la risposta rapida Quando ho impostato alcuni valori su una variabile nel metodo getView(). Ancora mostrano zero, quando li stampo nella riga accanto al metodo setAdapter(). Queste variabili sono accessibili per l'attività completa. Potete aiutarci? – Vaishnavi

+3

hey.Una volta che il getView() è scansionato, il controllo non torna alla dichiarazione accanto a setAdapter(). Infatti, il controllo non va direttamente a getView() una volta che viene chiamato setAdapter(), quasi tutte le istruzioni dopo vengono esagerate e quindi i controlli passano a getView(). Im letteralmente confuso con questo comportamento. Per favore aiuto. – Vaishnavi

+1

Ciao. Ciò significa che se avessi 100 elementi da mostrare nella visualizzazione elenco, il metodo getView() verrà chiamato 100 volte? –

7

Per essere più chiari, getView() viene chiamato ogni volta che un nuovo elemento viene visualizzato sullo schermo, al conteggio degli elementi visualizzati. Il che significa che se hai 1 milione di articoli, ma 15 di essi si adattano allo schermo, getView viene chiamato 15 volte. Ogni volta che si scorre su/giù e vengono visualizzati nuovi elementi, getView() viene chiamato per nuovi. E dovresti anche essere consapevole del meccanismo del riciclatore. Che detiene un layout di modello per ogni tipo di elemento e invia in questa vista al metodo getView() come parametro convertView, in modo da poterlo utilizzare per evitare il gonfiaggio del layout.

+0

Ciao ... Quindi, mentre scorro verso il basso, il metodo getView() viene chiamato per ogni elemento della lista che diventa visibile all'utente? Inoltre, inizialmente se solo 10 elementi possono essere visibili sullo schermo del cellulare alla volta, quindi il metodo getView() viene richiamato all'inizio 10 volte? Sto pensando correttamente? ... Grazie. –

+0

@TheHunter si, giusto. –

+0

Ed è convertView == null ogni volta che viene chiamato getView()? –

Problemi correlati