Uno spinner è un oggetto (equivalente ad una selectbox in Html) utilizzabile sul layout grafico di un dispositivo Android che fornisce un modo rapido per selezionare i valori contenuti in un menu a discesa che si apre quando si fa click su di esso.
Nello stato di default un spinner mostra sempre un valore selezionato che cambia quando si fa click sulle opzioni disponibili all’interno del menu.
In questo articolo ci occupiamo di sviluppare un’applicazione per rappresentare il funzionamento di uno spinner mostrando un “Toast” quando si fa click su uno dei valori disponibili.
Apriamo eclipse e creiamo un nuovo progetto cliccando su File –>New->Android Application Project , si apriranno una serie di schermate di configurazione del progetto. Nella prima finestra che visualizziamo diamo il nome al nostro progetto ed andiamo avanti facendo click su “Next”:
Nella schermata successiva visualizziamo alcuni parametri di configurazione come la scelta di un’icona personalizzata per il lancio dell’app, creare l’activity principale e dove posizionare il contenuto del progetto all’ interno di un Workspace:
Clicchaimo su next e passaimo alla schermata successiva nella quale sceglieremo di utilizzare una blank Activity :
Andiamo ancora avanti, visualizzeremo l’ultima schermata di configurazione nella quale andremo a dare il nome all’activity e al relativo layout:
Main Layout File
Dopo aver terminato i passaggi iniziali di configurazione, entriamo nel vivo dello sviluppo della nostra applicazione cominciando nella modifica del file “activity_main.xml” che si trova sotto il percorso “res/layout/” del nostro progetto.
Apriamo il file in modalità “Graphical layout”, eliminiamo la stringa “Hello world” impostatata di default da eclipse e con la comodità del “drag&drop” inseriamo un oggetto spinner. L’ Xml del layout principale sarà il seguente:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" android:entries="@array/months" android:prompt="@string/spin" /> </RelativeLayout>
Elenco degli elementi dello spinner
Apriamo il file “string.xml” che si trova sotto il percorso “res/values/” del nostro progetto e definiamo la lista degli elementi che si dovranno visualizzare:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">ExampleSpinner</string> <string name="action_settings">Settings</string> <string name="spin">Choose a month</string> <string-array name="months"> <item>January</item> <item>February</item> <item> March </item> <item>April</item> <item> May</item> <item> June </item> <item>July</item> <item> August</item> <item> September</item> <item> October</item> <item> November</item> <item> December</item> </string-array> </resources>
MainActivity.java
Apriamo adesso il file MainActivity.java che si trova sotto il percorso “src/com.apps.examplespinner/”
package com.apps.examplespinner; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; public class MainActivity extends Activity implements OnItemSelectedListener { private Spinner spinner; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); spinner = (Spinner) findViewById(R.id.spinner1); ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.months, android.R.layout.simple_spinner_dropdown_item); //creazione dell'adapter per lo spinner adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); //spinner click listener spinner.setOnItemSelectedListener(this); } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //prendo il valore dell'elemento selezionato String item = parent.getItemAtPosition(position).toString(); //visualizzo l'elemento selezionato Toast.makeText(parent.getContext(), item, Toast.LENGTH_LONG).show(); } public void onNothingSelected(AdapterView<?> arg0) { } }
Adesso siamo pronti per lanciare e testare la nostra app, andiamo sul menu di eclipse e facciamo ckick su run->debug e nella finestra che si apre selezioniamo la voce“Android Application”.
Potete scaricare qui il sorgente dell’applicazione.