Esempio DatePicker

Un datepicker e' un componente che permette di selezionare una data

 

Creare un nuovo progetto android chiamato HelloSpinner

 

Aggiungere al layout una TextView che conterrĂ  la data impostata e un Button che aprira' un popup con il DatePicker

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">
 
    <TextView android:id="@+id/dateDisplay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""/>
 
    <Button android:id="@+id/pickDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Imposta la data"/>
 
</LinearLayout>

 

Aggiungere come campi di istanza della activity i due componenti appena creati e tre interi che conterranno l'anno, il mese e il giorno selezionati

public class HelloDatePickerActivity extends Activity {
 
    protected TextView mDateDisplay;
    protected Button mPickDate;
    protected int mYear;
    protected int mMonth;
    protected int mDay;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
 
    }
}

 

Nella activity vengono letti i componenti tramite gli id, viene associato un listener al bottone che apre un dialog e viene impostata come data la data odierna.

        mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
        mPickDate = (Button) findViewById(R.id.pickDate);
 
        mPickDate.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                showDialog(0);
            }
        });
 
        final Calendar c = Calendar.getInstance();
        mYear = c.get(Calendar.YEAR);
        mMonth = c.get(Calendar.MONTH);
        mDay = c.get(Calendar.DAY_OF_MONTH);
 
        updateDisplay();

 

La funzione updateDisplay() legge i valori di anno, mese e giorno e scrive nella TextView la data nel formato deciso

    protected void updateDisplay() {
        mDateDisplay.setText(
            new StringBuilder()
                    .append(mMonth + 1).append("-")
                    .append(mDay).append("-")
                    .append(mYear).append(" "));
    }

 

Il listener imposta la data quando viene selezionata dall'utente

    protected DatePickerDialog.OnDateSetListener mDateSetListener =
        new DatePickerDialog.OnDateSetListener() {
            public void onDateSet(DatePicker view, int year, 
                                  int monthOfYear, int dayOfMonth) {
                mYear = year;
                mMonth = monthOfYear;
                mDay = dayOfMonth;
                updateDisplay();
            }
    };

 

Il dialog crea un oggetto DatePicker associato al listener appena creato. La funzione showDialog() triggera l'esecuzione dell'handler onCreateDialog(). Il parametro id puo' essere eventualmente utilizzato per aprire popup con un contenuto diverso.

    protected Dialog onCreateDialog(int id) {
            return new DatePickerDialog(this,
                        mDateSetListener,
                        mYear, mMonth, mDay);
    }

AttachmentSize
HelloDatePicker.zip45.78 KB