Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
android_spinner [2022/09/16 15:12] enrique_mieza_sanchez [Creació d'un spinner de forma gràfica] |
android_spinner [2022/10/17 17:03] (actual) enrique_mieza_sanchez [Creació d'un spinner de forma gràfica] |
||
---|---|---|---|
Línia 3: | Línia 3: | ||
Un //spinner// d' | Un //spinner// d' | ||
- | La programació en Android és, però, més complicada que en altres entorns. | + | La programació en Android és, però, més complicada que en altres entorns |
- | * Llista estàtica | + | |
- | * Llista dinàmica | + | {{ https:// |
+ | |||
{{tag> #FpInfor #Dam #DamMp08 #DamMp08Uf1 android spinner dropdown menu desplegable}} | {{tag> #FpInfor #Dam #DamMp08 #DamMp08Uf1 android spinner dropdown menu desplegable}} | ||
Línia 26: | Línia 28: | ||
Però nosaltres volem un // | Però nosaltres volem un // | ||
- | Som-hi: | + | <WRAP todo> |
- | - Crear el '' | + | |
+ | - Crea el '' | ||
- Crear la [[https:// | - Crear la [[https:// | ||
- Assignem el valor de l' | - Assignem el valor de l' | ||
- | - | + | - En el codi, poder recollir el valor del Spinner amb < |
+ | - Posa un botó que quan el premis reculli el valor del '' | ||
+ | </ | ||
\\ | \\ | ||
- | ===== Creació d' | + | ===== Creació d' |
+ | ==== A partir de dades d'un resource ==== | ||
+ | |||
+ | Primer caldrà crear un **array d' | ||
+ | |||
+ | Per exemple, per fer un selector de números del 0 al 5: | ||
+ | |||
+ | <file xml strings.xml> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | Es pot crear un Spinner de forma programàtica amb el seu '' | ||
+ | |||
+ | <file java> | ||
+ | Spinner spinner = new Spinner(this); | ||
+ | ArrayAdapter< | ||
+ | R.array.nombres, | ||
+ | spinner.setAdapter(adapter); | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== A partir de dades dinàmiques ==== | ||
+ | Per crear un rang de dades del 0 al 5 com hem fet abans no cal definir el array a l' | ||
+ | |||
+ | <file java> | ||
+ | Spinner spinner = new Spinner(this); | ||
+ | CharSequence[] nombres = {" | ||
+ | ArrayAdapter< | ||
+ | android.R.layout.simple_spinner_item, | ||
+ | spinner.setAdapter(adapter); | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Connectant les callback dels Spinner ===== | ||
+ | Per poder respondre a les accions de l' | ||
+ | |||
+ | Tindrem 2 estratègies bàsiques per a implementar les // | ||
+ | |||
+ | |||
+ | ==== Opció 1: objecte OnItemSelectedListener ==== | ||
+ | Crear un objecte tipus '' | ||
+ | |||
+ | <code java> | ||
+ | Spinner spinner = new Spinner(this); | ||
+ | spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { | ||
+ | @Override | ||
+ | public void onItemSelected(AdapterView<?> | ||
+ | // la posició del spinner és ' | ||
+ | String string = spinner.getSelectedItem().toString(); | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public void onNothingSelected(AdapterView<?> | ||
+ | |||
+ | } | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | ==== Opció 2: heretar OnItemSelechtedListener a la MainActivity ==== | ||
+ | Podem heretar la interfície '' | ||
+ | |||
+ | <code java> | ||
+ | public class SpinnerActivity extends Activity implements OnItemSelectedListener { | ||
+ | ... | ||
+ | |||
+ | protected void onCreate(Bundle savedInstanceState) { | ||
+ | ... | ||
+ | Spinner spinner = new Spinner(this); | ||
+ | spinner.setOnItemSelectedListener(this); | ||
+ | ... | ||
+ | } | ||
+ | |||
+ | public void onItemSelected(AdapterView<?> | ||
+ | int pos, long id) { | ||
+ | // An item was selected. You can retrieve the selected item using | ||
+ | // parent.getItemAtPosition(pos) | ||
+ | } | ||
+ | |||
+ | public void onNothingSelected(AdapterView<?> | ||
+ | // Another interface callback | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Ens resultarà un codi més llegible si fem servir la opció 2, al menys en aquest cas. | ||
+ | |||
+ | Segueix la [[https:// | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Exercicis ===== | ||
+ | <WRAP todo> | ||
+ | Crea una app amb 2 '' | ||
+ | * Un creat de forma estàtica amb els noms dels planetes, tal i com planteja la doc oficial de '' | ||
+ | * Un creat programàticament amb els números descrits anteriorment. | ||
+ | |||
+ | Implementa les // | ||
+ | </ | ||
+ | |||
+ | \\ | ||