Spinner
Revisión del 19:05 7 oct 2016 de Wiki (discusión | contribuciones) (Página creada con «==Introdución== *Un '''Spinner''' é unha lista despregable de opcións na que o usuario pode escoller unha delas. Image:00_spinners_form.png *Imos comezar usando o...»)
Sumario
Introdución
- Un Spinner é unha lista despregable de opcións na que o usuario pode escoller unha delas.
- Imos comezar usando o Spinner apoiándonos primeiro nun botón de texto.
- Unha forma estática de definir os datos que van encher o Spinner é usando un arquivo de recursos de tipo String-array:
- Referencias
Caso práctico
- Crear o proxecto U2_12_Spinner
- 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.
- Spinner Planetas
Arquivo de recursos: String-Array
- Crear 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">
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 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical" >
6
7 <Spinner
8 android:id="@+id/spin_planetas"
9 android:layout_width="wrap_content"
10 android:layout_height="wrap_content"
11 android:entries="@array/planetas" />
12
13 <Button
14 android:id="@+id/btn_seleccion"
15 android:layout_width="wrap_content"
16 android:layout_height="wrap_content"
17 android:onClick="onButtonClick"
18 android:text="Preme cando selecciones" />
19
20 <TextView
21 android:id="@+id/lbl_resultado"
22 android:layout_width="wrap_content"
23 android:layout_height="wrap_content"
24 android:text="Selecciona un planeta" />
25
26 </LinearLayout>
- Liña 11: é onde se vincula o Spinner co recurso tipo array: planetas.
- Liña 17: chamamos a un método cando se faga Click.
Código Java
1 package com.example.u2_12_spinner;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.view.Menu;
6 import android.view.View;
7 import android.widget.Spinner;
8 import android.widget.TextView;
9
10 public class U2_12_Spinner extends Activity {
11
12 @Override
13 protected void onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.activity_u2_12__spinner);
16 }
17
18 @Override
19 public boolean onCreateOptionsMenu(Menu menu) {
20 // Inflate the menu; this adds items to the action bar if it is present.
21 getMenuInflater().inflate(R.menu.u2_12__spinner, menu);
22 return true;
23 }
24
25 public void onButtonClick(View v) {
26 Spinner spinPlanetas = (Spinner) findViewById(R.id.spin_planetas);
27 TextView lblResultado = (TextView) findViewById(R.id.lbl_resultado);
28
29 lblResultado.setText("Seleccionaches "
30 + spinPlanetas.getSelectedItem()
31 + "\nque está na posición " + spinPlanetas.getSelectedItemId());
32 }
33
34 }
- Liñas 26,27: Definimos os obxectos nos que recollemos os controis declarados no Layout.
- Liñas 31,32: seleccionamos o elemento da lista e a súa posición.
Capturar o evento cando se selecciona un ítem
- 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.
1 package com.example.u2_12_spinner;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.view.Menu;
6 import android.view.View;
7 import android.widget.AdapterView;
8 import android.widget.AdapterView.OnItemSelectedListener;
9 import android.widget.Spinner;
10 import android.widget.TextView;
11
12 public class U2_12_Spinner extends Activity {
13
14 @Override
15 protected void onCreate(Bundle savedInstanceState) {
16 super.onCreate(savedInstanceState);
17 setContentView(R.layout.activity_u2_12__spinner);
18
19 Spinner spinPlanetas = (Spinner) findViewById(R.id.spin_planetas);
20
21 spinPlanetas.setOnItemSelectedListener(new OnItemSelectedListener() {
22
23 @Override
24 public void onItemSelected(AdapterView<?> parent, View view,
25 int pos, long id) {
26 // TODO Auto-generated method stub
27
28 TextView lblResultado = (TextView) findViewById(R.id.lbl_resultado);
29
30 lblResultado.setText("Seleccionaches "
31 + parent.getItemAtPosition(pos)
32 + "\nque está na posición " + pos);
33
34 }
35
36 @Override
37 public void onNothingSelected(AdapterView<?> arg0) {
38 // TODO Auto-generated method stub
39
40 }
41 });
42 }
43
44 @Override
45 public boolean onCreateOptionsMenu(Menu menu) {
46 // Inflate the menu; this adds items to the action bar if it is present.
47 getMenuInflater().inflate(R.menu.u2_12__spinner, menu);
48 return true;
49 }
50
51 public void onButtonClick(View v) {
52 Spinner spinPlanetas = (Spinner) findViewById(R.id.spin_planetas);
53 TextView lblResultado = (TextView) findViewById(R.id.lbl_resultado);
54
55 lblResultado.setText("Seleccionaches " + spinPlanetas.getSelectedItem()
56 + "\nque está na posición " + spinPlanetas.getSelectedItemId());
57 }
58
59 }
- Liña 21: Listener que se chama cando se selecciona un elemento do Spinner
- Liña 24: 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
-- Ángel D. Fernández González e Carlos Carrión Álvarez -- (2015).
