Diferencia entre revisiones de «Spinner»

De MediaWiki
Ir a la navegación Ir a la búsqueda
 
(No se muestran 4 ediciones intermedias de 2 usuarios)
Línea 27: Línea 27:
 
   
 
   
 
<br />
 
<br />
−
*Nunha primeira versión imos crear unha aplicación que permita seleccionar un planeta nun Spiner e logo premendo un botón nos indicará o ítem seleccionado e a súa posición.
+
*Nunha primeira versión imos crear unha aplicación na que se carguen nun spinner a lista de planetas definidos nun arquivo de recursos.
−
 
 
  
 
<gallery caption="Spinner Planetas" widths="350" heights="300px" perrow="2">
 
<gallery caption="Spinner Planetas" widths="350" heights="300px" perrow="2">
 
Image:PDM_spinner_7.jpg| Aplicación recén iniciada.
 
Image:PDM_spinner_7.jpg| Aplicación recén iniciada.
−
Image:PDM_spinner_8.jpg| Seleccionar Xúpiter (5º elemento da lista)e prememos o botón
+
Image:PDM_spinner_8.jpg| Seleccionar Xúpiter (5º elemento da lista).
−
Image:PDM_spinner_9.jpg| Indícanos que seleccionamos Xúpiter e que está na posición 4. O índice do Spinner comeza en 0.
 
 
</gallery>
 
</gallery>
  
Línea 95: Línea 93:
  
 
<br />
 
<br />
 +
'''[https://wiki.cifprodolfoucha.es/index.php?title=Programaci%C3%B3n_de_dispositivos_m%C3%B3biles#UNIDADE_2:_A_interface_de_usuario. Enlace a la página principal de la UD2]'''
 +
<br />
 +
<br />
 +
'''[https://wiki.cifprodolfoucha.es/index.php?title=Programación_de_dispositivos_móbiles Enlace a la página principal del curso]'''
 +
<br />
 +
 +
 +
 +
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] e [[Usuario:Carrion|Carlos Carrión Álvarez]] -- (2015).
  
 
===Código Java===
 
===Código Java===
Línea 129: Línea 136:
 
: Veremos máis adiante na sección do Spinner como xestionar o spinner (recuperar o elemento seleccionado, capturar o evento de seleccionar un elemento da lista,...)
 
: Veremos máis adiante na sección do Spinner como xestionar o spinner (recuperar o elemento seleccionado, capturar o evento de seleccionar un elemento da lista,...)
  
−
===Capturar o evento cando se selecciona un ítem===
+
* A captura de eventos empregando este control o veremos na [https://wiki.cifprodolfoucha.es/index.php?title=Spinner_con_Adaptadores sección de adaptadores do Spinner].
  
−
*Nesta segunda versión vaise deixar que o botón siga realizando a súa función, pero agora cando seleccionemos un ítem que se capture o evento e que na etiqueta indicar cal é o planeta seleccionado e a súa posición.
 
  
−
<syntaxhighlight lang="java" line highlight="27-50,58">
 
−
package es.cursoandroid.cifprodolfoucha.aprendiendo.UI.Spinners;
 
  
−
import android.app.Activity;
+
* Indicar que nas propiedades do Spinner temos a propiedade '''SpinnerMode''' que permite que cando se preme na lista, apareza unha caixa de diálogo cos elementos do spinner (opción '''dilaog'''').
−
import android.os.Bundle;
 
−
import android.view.View;
 
−
import android.widget.AdapterView;
 
−
import android.widget.Spinner;
 
−
import android.widget.TextView;
 
  
−
import es.cursoandroid.cifprodolfoucha.aprendiendo.R;
 
  
−
public class UD02_01_Spinners extends Activity {
 
−
 
−
 
−
    public void onButtonClick(View v) {
 
−
        Spinner spinPlanetas = (Spinner) findViewById(R.id.spnPlanetas_UD02_01_spinners);
 
−
        TextView txtResultado = (TextView) findViewById(R.id.txtResultado_UD02_01_spinners);
 
  
−
        txtResultado.setText("Seleccionaches "
 
−
                + spinPlanetas.getSelectedItem()
 
−
                + "\nque está na posición " + spinPlanetas.getSelectedItemId());
 
−
    }
 
−
 
−
    /**
 
−
    * Neste método asociamos os listener aos view onde queramos xestionar eventos
 
−
    */
 
−
    private void xestionarEventos(){
 
−
 
−
        Spinner spinPlanetas = (Spinner) findViewById(R.id.spnPlanetas_UD02_01_spinners);
 
−
        spinPlanetas.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
 
−
 
−
            @Override
 
−
            public void onItemSelected(AdapterView<?> parent, View view,
 
−
                                      int pos, long id) {
 
−
                // TODO Auto-generated method stub
 
−
 
−
                TextView txtResultado = (TextView) findViewById(R.id.txtResultado_UD02_01_spinners);
 
−
 
−
                txtResultado.setText("Seleccionaches "
 
−
                        + parent.getItemAtPosition(pos)
 
−
                        + "\nque está na posición " + pos);
 
−
 
−
            }
 
−
 
−
            @Override
 
−
            public void onNothingSelected(AdapterView<?> arg0) {
 
−
                // TODO Auto-generated method stub
 
−
 
−
            }
 
−
        });
 
−
    }
 
−
 
−
    @Override
 
−
    protected void onCreate(Bundle savedInstanceState) {
 
−
        super.onCreate(savedInstanceState);
 
−
        setContentView(R.layout.activity_ud02_01__spinners);
 
−
 
−
        xestionarEventos();
 
−
    }
 
−
}
 
−
</syntaxhighlight>
 
−
*'''Liña 30''': Listener que se chama cando se selecciona un elemento do Spinner
 
−
*'''Liña 33''': O métod onItemSelected(AdapterView<?> parent, View view, int pos, long id) é chamado cando se selecciona un item distinto do xa seleccionado.
 
−
*Parámetros:
 
−
**parent: O elemento (AdapterView) onde se fixo a selección.
 
−
**view:  A vista que foi selecionada dentro do AdapterView
 
−
**position: A posición da vista dentro do Adaptador.
 
−
**id: Cada ítem pode ter varias filas (neste caso só ten unha) este campo indicaría a fila dentro do ítem
 
  
  

Revisión actual del 12:57 21 nov 2020

Introdución

  • Un Spinner é unha lista despregable de opcións na que o usuario pode escoller unha delas.

00 spinners form.png



  • Unha forma estática de definir os datos que van encher o Spinner é usando un arquivo de recursos de tipo String-array:


Caso práctico

Se non o temos creado antes, crea un paquete de nome UI como un subpaquete do teu paquete principal.
Dentro do paquete UI, crearemos un novo paquete de nome: Spinners.



  • Dentro do paquete Spinners crear unha nova 'Empty Activity' de nome: UD02_01_Spinners de tipo Launcher e sen compatibilidade.
Modifica o arquivo AndroidManifiest.xml e engade unha label á activity como xa vimos na creación do proxecto base.



  • Nunha primeira versión imos crear unha aplicación na que se carguen nun spinner a lista de planetas definidos nun arquivo de recursos.



Arquivo de recursos: String-Array


  • Ficheiro de recursos: array_planetas.xml.
  • Polo nome do string_array é por onde se vai acceder ao array.
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <resources>
 3     <string-array name="planetas_UD02_01_spinner">
 4         <item>Mercurio</item>
 5         <item>Venus</item>
 6         <item>Terra</item>
 7         <item>Marte</item>
 8         <item>Xúpiter</item>
 9         <item>Saturno</item>
10         <item>Urano</item>
11         <item>Neptuno</item>
12     </string-array>
13 </resources>



XML do Layout

  • Observar como se crea un Spinner
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:orientation="vertical" >
 7 
 8     <Spinner
 9         android:id="@+id/spnPlanetas_UD02_01_spinners"
10         android:layout_width="wrap_content"
11         android:layout_height="wrap_content"
12         android:entries="@array/planetas_UD02_01_spinner" />
13 
14 </LinearLayout>
  • Liña 12: é onde se vincula o Spinner co recurso tipo array: planetas.



Enlace a la página principal de la UD2

Enlace a la página principal del curso



-- Ángel D. Fernández González e Carlos Carrión Álvarez -- (2015).

Código Java

 1 package es.cursoandroid.cifprodolfoucha.aprendiendo.UI.Spinners;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.view.View;
 6 import android.widget.AdapterView;
 7 import android.widget.Spinner;
 8 import android.widget.TextView;
 9 
10 import es.cursoandroid.cifprodolfoucha.aprendiendo.R;
11 
12 public class UD02_01_Spinners extends Activity {
13 
14 
15 
16     @Override
17     protected void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.activity_ud02_01__spinners);
20 
21     }
22 }
  • Liñas 19: Cargamos o Layout onde se atopa o Spinner.



Veremos máis adiante na sección do Spinner como xestionar o spinner (recuperar o elemento seleccionado, capturar o evento de seleccionar un elemento da lista,...)


  • Indicar que nas propiedades do Spinner temos a propiedade SpinnerMode que permite que cando se preme na lista, apareza unha caixa de diálogo cos elementos do spinner (opción dilaog').






-- Ángel D. Fernández González e Carlos Carrión Álvarez -- (2015).