Autor
|
Tema: Android - Control Spinner (Leído 2,350 veces)
|
TickTack
Desconectado
Mensajes: 434
CipherX
|
Hola a todos,
tengo una duda:
En la clase ArrayAdapter <String> se requieren en el constructor tres parametros. En el primero hay que pasarle un objeto (normalmente la clase actual). Luego el adaptador hay que pasarselo al metodo setAdapter de la clase Spinner. Pero necesita este metodo el primer parametro que es pasado al constructor de la clase ArrayAdapter <String>? Por qué?
Y por qué no hicieron los programadores la posibilidad de pasar los parametros al metodo setAdapter directamente en vez de tener que crear un adaptador? No es eso poco eficiente?
Gracias y saludos
|
|
|
En línea
|
|
|
|
HardC0d3
Desconectado
Mensajes: 49
|
ArrayAdapter: https://developer.android.com/reference/android/widget/ArrayAdapterSpinner: https://developer.android.com/reference/android/widget/SpinnerEl primer parámetro que pide el constructor de la clase ArrayAdapter es un objeto de la clase Context. La firma del método setAdapter de la clase Spinner es: setAdapter(SpinnerAdapter adapter), por lo tanto, pide que se le pase un objeto de la clase/interfaz SpinnerAdapter. Pero necesita este metodo el primer parametro que es pasado al constructor de la clase ArrayAdapter <String>? Por qué? setAdapter no pide un objeto Context ("primer parámetro del contructor de la clase ArrayAdapter"), sino que pide un objeto de la clase/interfaz SpinnerAdapter o cualquier subclase de ésta. Porque si un método pide un objeto, es mejor construir ese objeto antes de pasárselo como parámetro a un método. Así, ese objeto puedes usarlo posteriormente con otros métodos que pidan Adapter en vez de estar construyendo el objeto dentro de un método de Spinner, ya que la función de Spinner no es crear Adapter sino obtener la "información" del objeto Adapter, entre otras cosas. Saludos.
|
|
|
En línea
|
|
|
|
TickTack
Desconectado
Mensajes: 434
CipherX
|
Hola HardC0d3, gracias por tu respuesta. Dejame, por favor, mostrarte el siguiente código: String []opciones={"sumar","restar","multiplicar","dividir"}; ArrayAdapter <String>adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, opciones); spinner1.setAdapter(adapter); ¿Por qué hay que pasarle al constructor de ArratAdapter<String> uns referencia de la clase actual? ¿Por que no hicieron los programadores que en el método setAdapter se han pasados los tres parámetros? Es decir, así: String []opciones={"sumar","restar","multiplicar","dividir"}; spinner1.setAdapter(this,android.R.layout.simple_spinner_item, opciones); Gracias y saludos
|
|
|
En línea
|
|
|
|
Serapis
|
Porque rompe uno de los objetivos/pilares de la programación orientada a objetos: La encapsulación.
La idea en la OOP es que se creen objetos abstractos, cada objeto hace su tarea y nada más. Cuanto más abstracto sea un objeto más genérico y por tanto más reutilizable resulta (encaja en más diferentes sitios que si está muy especializado).
Si un objeto debe tratar los métodos de otro objeto, entonces estará haciendo su tarea y parte de la que se supone que se encarga otro objeto.
Con tu ejemplo: al recibir tu 'spinner' un objeto arrayadapter, se supone que dicho objeto ya ha validado los parámetros que recibió al crearse la instancia 'adapter', así 'spinner', se desentiende de tener que tratar si dichos parámetros son válidos o no, la única verificación que precisaría, es saber que dicha instancia existe, los parámetros que luego tome de 'adapter', ya son seguro tomarlos y operar con ellos (con la garantía (se supone) de ser correctos).
Además la encapsulación, si te das cuenta simplifica mejor los parámetros, ya que 'adapter' atrapa todos los parámetros que al caso precisa 'spinner'.
|
|
|
En línea
|
|
|
|
TickTack
Desconectado
Mensajes: 434
CipherX
|
Hola NEBIRE,
¡¡lo has explicado de una manera tan maravillosa!!
Te estoy muy agradecido.
Gracias y saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Spinner
Java
|
DiTeN
|
2
|
6,155
|
24 Enero 2010, 00:26 am
por DiTeN
|
|
|
Aplicacion android control remoto arduino
Electrónica
|
R0BERT0
|
0
|
3,574
|
15 Septiembre 2013, 10:46 am
por R0BERT0
|
|
|
Problema Android (SchrolView Control personalizado)
Java
|
LaThortilla (Effort)
|
1
|
1,600
|
19 Mayo 2014, 00:36 am
por LaThortilla (Effort)
|
|
|
¡Cuidado! Algunos fidget spinner explotan
Noticias
|
wolfbcn
|
0
|
1,364
|
30 Junio 2017, 21:19 pm
por wolfbcn
|
|
|
llenar spinner con webservice soap
Programación General
|
hades645
|
0
|
2,127
|
21 Mayo 2019, 00:23 am
por hades645
|
|