2011-11-14 5 views
16

So che ListAdapter è un'interfaccia e ArrayAdapter è una classe. Quindi possiamo solo istanziare ArrayAdapter. Ho incontrato un codiceDifferenza tra ArrayAdapter e ListAdapter in Android?

ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, songNames); 

Ma io ero in grado di fare la stessa cosa con

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, songsArray); 

Quindi voglio sapere, in quali luoghi esattamente abbiamo bisogno ListAdapter?

Grazie

risposta

25

Questo non è correlato ad Android. Ma una domanda generale di Java.

Quando si utilizza ListAdapter come tipo per la variabile, si è veramente interessati all'interfaccia. Potresti non essere interessato a chiamare un metodo specifico di ArrayAdapter<String> non disponibile in ListAdapter. Ciò è dovuto principalmente all'assegnazione dell'adattatore come scheda di elenco per la vista.

È possibile utilizzare il tipo preciso di ArrayAdapter<String> se è davvero necessario chiamare alcuni metodi specifici.

Tutto dipende dal vostro caso d'uso.

0

BaseAdapter È un adattatore molto generico che consente di eseguire praticamente tutto ciò che si desidera. È una classe base di tutti gli adattatori.

ArrayAdapter È un'implementazione più completa che funziona bene per i dati in array o ArrayList. Analogamente, esiste un CursorAdapter correlato da utilizzare se i dati si trovano in un cursore. Entrambi questi estendono BaseAdapter