2011-11-14 19 views
16

Sé que ListAdapter es una interfaz y ArrayAdapter es una clase. Entonces solo podemos instanciar ArrayAdapter. Me encontré con un códigoDiferencia entre ArrayAdapter y ListAdapter en Android?

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

Pero yo era capaz de hacer lo mismo con

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

Así que quiero saber, en qué lugares exactos qué necesitamos ListAdapter?

Gracias

Respuesta

25

Esto no está relacionado con Android. Pero una pregunta general de Java.

Cuando usa ListAdapter como tipo de variable, realmente está interesado en la interfaz. Puede que no le interese llamar a un método específico de ArrayAdapter<String> no disponible en ListAdapter. Esto se debe principalmente a que solo asignará el adaptador como el adaptador de lista para la vista.

Puede usar el tipo exacto de ArrayAdapter<String> si realmente necesita llamar a algunos métodos específicos.

Todo depende de su caso de uso.

0

BaseAdapter Es un adaptador muy genérico que le permite hacer prácticamente todo lo que desee. Es una clase base de todos los adaptadores.

ArrayAdapter Es una implementación más completa que funciona bien para los datos en arrays o ArrayLists. De forma similar, hay un CursorAdapter relacionado que debe usar si sus datos están en un Cursor. Ambos extienden BaseAdapter

Cuestiones relacionadas