Android DatePicker
I DatePicker sono dei componenti molto comodi per rappresentare le date, e li possiamo ormai trovare su qualsiasi software Web, Desktop o Mobile che sia.
Oggi vediamo come usare questo componente in Android.
Prima di tutto aggiuntetelo al lyout della vostra Activity:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/app_theme"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" ><DatePicker
android:id="@+id/date_picker"
android:layout_width="fill_parent"
android:layout_height="110dp"
android:calendarViewShown="false" /><Button
android:id="@+id/btn_up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn" /></LinearLayout>
Controllate quali opzioni fanno per voi ovviamente.
Ho messo anche un Button per impostarci sopra un evento di lettura della data scelta.
Poi nella nostra Avtivity:
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_er);
DatePicker datePicker = (DatePicker) findViewById(R.id.date_picker);
Button btnLogin = (Button) findViewById(R.id.btn);
btnLogin.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {
String date = DateFormat.format("yyyy-MM-dd", datePicker.getCalendarView().getDate()).toString();
System.out.println(date);
}
});
}}
Al click sul Button trasformo la data scelta in stringa e la formatto come voglio usando un oggetto DateFormat.
Se invece vogliamo impostare una data precisa in apertura di Activity:
public class MyActivity extends Activity {
private Intent intent = null;
private DatePicker datePicker = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.single_item);
intent = getIntent();
try {
setDateOnDatePicker(intent.getStringExtra("data"));
} catch (ParseException e) {
e.printStackTrace();
}
}
private void setDateOnDatePicker(String strDate) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.ITALY);
Date date = sdf.parse(strDate);
datePicker = (DatePicker) findViewById(R.id.date_picker);
final Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
datePicker.init(year, month, day, null);
}}
In questo caso passo la data da un'altra Activity, e per prendere il valore uso Intent.getStringExtra.
Nel metodo privato setDateOnDatePicker prima trasformo la data che mi arriva in formato stringa in un oggetto di tipo Date, formattato attraverso SimpleDateFormat.
Poi istanzio un oggetto Calendar e imposto il tempo sulla data parsata in precedenza.
Dall'oggetto Calendar estraggo giorno, mese e anno e li passo al metodo init di DatePicker per inizializzarlo su quella data.
Ciao!!
android java datepicker intent activity simpl
Commentami!