Using android Date Picker

10


This is a sample activity which shows how to use Date picker control.

Underlying Algorithm:

Basic description of algorithm in step by step form:
1.) Create a Project DatePickerExample.
2.) Create a date_picker.xml in res/layout.
3.) Put the following code in date_picker.xml :

<?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="horizontal">
 <TextView android:id="@+id/dateDisplay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="4dip"
            android:text="@string/hello"/>
        <Button android:id="@+id/pickDate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="4dip"
            android:text="@string/hello"/>     
</LinearLayout>

4.) To create a date picker control we need the following imports :

import java.util.Calendar;
import android.app.DatePickerDialog;
import android.widget.DatePicker; 

5.) Run the application.

Steps to Create:

1.) Open Eclipse. Use the New Project Wizard and select Android Project Give the respective project name i.e. DatePickerExample. Enter following information:
Project name: DatePickerExample
Build Target: Google APIs
Application name: DatePickerExample
Package name: com.sample.DatePickerExample
Create Activity: DatePickerExample

On Clicking Finish DatePickerExample code structure is generated with the necessary Android Packages being imported along with DatePickerExample.java. DatePickerExample class will look like following:

package com.sample.DatePickerExample;

import android.app.Activity;
import java.util.Calendar;
import android.app.DatePickerDialog;
import android.widget.DatePicker;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class DatePickerExample extends Activity {

	private TextView mDateDisplay;
	private int mYear;
	private int mMonth;
	private int mDay;
	static final int DATE_DIALOG_ID = 1;
	@Override

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.date_picker);
		mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
		Button pickDate = (Button) findViewById(R.id.pickDate);
		pickDate.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				showDialog(DATE_DIALOG_ID);
			}
		});
		final Calendar c = Calendar.getInstance();
		mYear = c.get(Calendar.YEAR);
		mMonth = c.get(Calendar.MONTH);
		mDay = c.get(Calendar.DAY_OF_MONTH);
		updateDisplay();
	}
	@Override
	protected Dialog onCreateDialog(int id) {
		switch (id) {

		case DATE_DIALOG_ID:
			return new DatePickerDialog(this,
				mDateSetListener,
				mYear, mMonth, mDay);
		}
		return null;
	}
	protected void onPrepareDialog(int id, Dialog dialog) {
		switch (id) {

		case DATE_DIALOG_ID:
			((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);
			break;
		}
	}    
	private void updateDisplay() {
		mDateDisplay.setText(
			new StringBuilder()
			// Month is 0 based so add 1
			.append(mMonth + 1).append("-")
			.append(mDay).append("-")
			.append(mYear).append(" "));
	}
	private DatePickerDialog.OnDateSetListener mDateSetListener =
		new DatePickerDialog.OnDateSetListener() {

		public void onDateSet(DatePicker view, int year, int monthOfYear,
				int dayOfMonth) {
			mYear = year;
			mMonth = monthOfYear;
			mDay = dayOfMonth;
			updateDisplay();
		}
	};
}

Output –The final output:

Did you enjoy this article?
Share
the
Love
Get Free Updates

10 Responses

  1. Arif says:

    Thanks dude,that worked well…….

    just wanted to know the other thing how will i embed this date function with other application of android

  2. Sushant says:

    You can call below lines anywhere in other android application and use mYear/mMonth/mDay to play with date.

    final Calendar c = Calendar.getInstance();
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);
    

    I hope I am getting you correctly.

  3. Tester says:

    Is that any style has to be applied in order to get the above date picker rather than standard datepicker dialog?

  4. Tester says:

    Is that any style has to be applied in order to get the above date picker rather than standard date picker dialog?..

  5. Derek Davidson says:

    I get the same as you, but it is difficult to change the year. I have been searching how toget a ‘nicer’ dialog, and it may be to set the them parameter. But I am not sure what tis points to.. Is it an XML file that defines the dialog.

    I know the problem with the dialog is that it is too big for the screen. Rotating sometimes shows a ‘scrollable’ year, or part of the text for the year. (a lot of 20 to gues which one is 2004).

    Any clues on where to look for a them for a dateDialog?

  6. Derek Davidson says:

    I get the same as you, but it is difficult to change the year. I have been searching how toget a \’nicer\’ dialog, and it may be to set the them parameter. But I am not sure what tis points to.. Is it an XML file that defines the dialog.

    I know the problem with the dialog is that it is too big for the screen. Rotating sometimes shows a \’scrollable\’ year, or part of the text for the year. (a lot of 20 to gues which one is 2004).

    Any clues on where to look for a them for a dateDialog?

  7. Pavan Kumar says:

    very nicely explained thank you sir

  8. Sebastian C says:

    How to modify it to pick from array of colours instead of text?

  9. Meghna says:

    Perfect thanks… This http://www.compiletimeerror.com/2013/07/android-date-picker-example-android.html looks a bit different, may help.. Have a look…

  10. Ankur says:

    Hi, How I Can add Two Button Simultaneously In Single Layout Activity.
    And Both Calander Sholud Display Different Date in Both Text View.
    Give Me Code If Requre Any New Plz.

    Thanx In Advance.

Leave a Reply


one × = 9

Proudly designed by Theme Junkie.