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/10/17 15:09] enrique_mieza_sanchez [Android Spinner o Dropdown] |
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 degut a la gestió de la RAM en llistes molt llargues amb recursos costosos com les imatges, explicat a l' | + | La programació en Android és, però, més complicada que en altres entorns degut a la gestió de la RAM en llistes molt llargues amb recursos costosos com les imatges, explicat a l' |
| {{ https:// | {{ https:// | ||
| Línia 28: | 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 < | - En el codi, poder recollir el valor del Spinner amb < | ||
| + | - Posa un botó que quan el premis reculli el valor del '' | ||
| + | </ | ||
| \\ | \\ | ||
| Línia 64: | Línia 67: | ||
| ArrayAdapter< | ArrayAdapter< | ||
| R.array.nombres, | R.array.nombres, | ||
| - | adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); | ||
| spinner.setAdapter(adapter); | spinner.setAdapter(adapter); | ||
| </ | </ | ||
| Línia 70: | Línia 72: | ||
| \\ | \\ | ||
| - | ==== A partir de dades pròpies | + | ==== 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. | + | Per crear un rang de dades del 0 al 5 com hem fet abans no cal definir el array a l' |
| <file java> | <file java> | ||
| Línia 78: | Línia 80: | ||
| ArrayAdapter< | ArrayAdapter< | ||
| android.R.layout.simple_spinner_item, | android.R.layout.simple_spinner_item, | ||
| - | adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); | ||
| spinner.setAdapter(adapter); | 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 // | ||
| + | </ | ||
| + | |||
| + | \\ | ||