Custom Android date and time selection control DateTimePickerDialog

Source: Internet
Author: User
Tags datetime

The Android system provides DatePicker, Timepicker, Datepickerdialog, Timepickerdialog controls for date and time selections and settings, but they are relatively independent and inconvenient to set " YYYY-MM-DD HH:mm:ss Date Time, the following is a date-time selection control Datetimepickerdialog that is customized with these components to easily set the "Yyyy-mm-dd HH:mm:ss" date Time, " Yyyy-mm-dd "type Date and" HH:mm:ss "type Time,

Code implementation:

The code is as follows Copy Code

Datetimepickerdialog.java

Package me.gogogogo.util;

Import Java.text.SimpleDateFormat;
Import Java.util.Calendar;

Import ME.GOGOGOGO.ACTIVITY.R;
Import android.app.Activity;
Import Android.app.AlertDialog;
Import Android.app.DatePickerDialog;
Import Android.app.TimePickerDialog;
Import Android.content.DialogInterface;
Import Android.widget.DatePicker;
Import Android.widget.EditText;
Import Android.widget.LinearLayout;
Import Android.widget.DatePicker.OnDateChangedListener;
Import Android.widget.TimePicker;
Import Android.widget.TimePicker.OnTimeChangedListener;
/**
* Date Time selection control
* @author Desert
*/
public class Datetimepickerdialog implements ondatechangedlistener,ontimechangedlistener{
Private DatePicker DatePicker;
Private Timepicker Timepicker;
Private Alertdialog AD;
Private String DateTime;
Private String Initdatetime;
activity of private activity;

/**
* Date Time pop-up selection box structure
* @param activity: Invoked parent activity
*/
Public Datetimepickerdialog (activity activity)
{
This.activity = activity;
}

public void init (DatePicker datepicker,timepicker timepicker)
{
Calendar calendar= calendar.getinstance ();
Initdatetime=calendar.get (calendar.year) + "-" +calendar.get (calendar.month) + "-" +
Calendar.get (Calendar.day_of_month) + "" +
Calendar.get (Calendar.hour_of_day) + ":" +
Calendar.get (Calendar.minute) +
Calendar.get (Calendar.second);
Datepicker.init (Calendar.get (calendar.year), Calendar.get (Calendar.month), Calendar.get (Calendar.DAY_OF_MONTH), this);
Timepicker.setcurrenthour (Calendar.get (calendar.hour_of_day));
Timepicker.setcurrentminute (Calendar.get (Calendar.minute));
}

/**
* Popup Date Time selection box
* @param datetimetextedite The date time text edit box you want to set
* @param type:0 for date Time type: Yyyy-mm-dd HH:mm:ss
* 1 for Date type: YYYY-MM-DD
* 2 for TIME type: HH:MM:SS
* @return
*/
Public Alertdialog datetimepickdialog (final edittext datetimetextedite, int type)
{
Calendar C = calendar.getinstance ();
Switch (type) {
Case 1:
New Datepickerdialog (activity,
New Datepickerdialog.ondatesetlistener () {
public void Ondateset (DatePicker datepicker, int year, int monthofyear,
int DayOfMonth) {
Calendar calendar = Calendar.getinstance ();
Calendar.set (Datepicker.getyear (), Datepicker.getmonth (),
Datepicker.getdayofmonth ());
SimpleDateFormat SDF = new SimpleDateFormat ("Yyyy-mm-dd");
Datetime=sdf.format (Calendar.gettime ());
Datetimetextedite.settext (DateTime);
}
},
C.get (Calendar.year),
C.get (Calendar.month),
C.get (Calendar.date)). Show ();
return null;
Case 2:
New Timepickerdialog (activity,
New Timepickerdialog.ontimesetlistener () {
public void Ontimeset (Timepicker timepicker, int hourofday, int minute) {
Calendar calendar = Calendar.getinstance ();
Calendar.set (Calendar.year, Calendar.month,
Calendar.day_of_month, Timepicker.getcurrenthour (),
Timepicker.getcurrentminute ());
SimpleDateFormat SDF = new SimpleDateFormat ("HH:mm:ss");
Datetime=sdf.format (Calendar.gettime ());
Datetimetextedite.settext (DateTime);
}
},
C.get (Calendar.hour_of_day),
C.get (Calendar.minute),
true). Show ();
return null;
Default
LinearLayout datetimelayout = (linearlayout) activity.getlayoutinflater (). Inflate (r.layout.datetime, NULL);
DatePicker = (DatePicker) Datetimelayout.findviewbyid (R.id.datepicker);
Timepicker = (timepicker) Datetimelayout.findviewbyid (R.id.timepicker);
Init (Datepicker,timepicker);
Timepicker.setis24hourview (TRUE);
Timepicker.setontimechangedlistener (this);

AD = new Alertdialog.builder (activity). SetIcon (R.drawable.datetimeicon). Settitle (Initdatetime). Setview ( datetimelayout). Setpositivebutton ("Settings",
New Dialoginterface.onclicklistener ()
{
public void OnClick (Dialoginterface dialog,
int Whichbutton)
{
Datetimetextedite.settext (DateTime);
}
}). Setnegativebutton ("Cancel",
New Dialoginterface.onclicklistener ()
{
public void OnClick (Dialoginterface dialog,
int Whichbutton)
{
Datetimetextedite.settext ("");
}
). Show ();

ondatechanged (null, 0, 0, 0);
return AD;
}
}

public void ontimechanged (timepicker view, int hourofday, int minute)
{
ondatechanged (null, 0, 0, 0);
}

public void ondatechanged (DatePicker view, int year, int monthofyear,
int dayofmonth)
{
Calendar calendar = Calendar.getinstance ();

Calendar.set (Datepicker.getyear (), Datepicker.getmonth (),
Datepicker.getdayofmonth (), Timepicker.getcurrenthour (),
Timepicker.getcurrentminute ());
SimpleDateFormat SDF = new SimpleDateFormat ("Yyyy-mm-dd HH:mm:ss");
Datetime=sdf.format (Calendar.gettime ());
Ad.settitle (DateTime);
}

}

Layout file:

Datetime.xml

  code is as follows copy code

<?xml version= "1.0" encoding= "Utf-8"
<linearlayout xmlns: Android= "http://schemas.android.com/apk/res/android"
 android:orientation= "vertical"
 android: Layout_width= "Fill_parent"
 android:layout_height= "fill_parent"
 <datepicker
      android:id= "@+id/datepicker"
  android:layout_width= "fill_parent"
   android:layout_height= "Wrap_content"/>
 <timepicker
     android:id= "@+id/timepicker"
  android:layout_width= "fill_parent"
  android:layout_height= Wrap _content "/>
</linearlayout>

Use instance:

Mainactivity.java

The code is as follows Copy Code

Package me.gogogogo.activity;

Import Me.gogogogo.util.DateTimePickerDialog;
Import Android.os.Bundle;
Import Android.view.View;
Import Android.view.View.OnClickListener;
Import Android.widget.EditText;
Import android.app.Activity;

public class Mainactivity extends activity {
Private EditText date;
Private EditText time;
Private EditText datetime;
public void OnCreate (Bundle savedinstancestate) {
Super.oncreate (savedinstancestate);
Setcontentview (R.layout.main);

datetime = (edittext) This.findviewbyid (r.id.datetime);
Date = (edittext) This.findviewbyid (r.id.date);
Time = (edittext) This.findviewbyid (r.id.time);

Datetime.setonclicklistener (New Datetimeonclick ());
Date.setonclicklistener (New Dateonclick ());
Time.setonclicklistener (New Timeonclick ());
}

Private Final class Datetimeonclick implements onclicklistener{
public void OnClick (View v) {
Datetimepickerdialog Datetimepickdialog = new Datetimepickerdialog (
Mainactivity.this);
Datetimepickdialog.datetimepickdialog (datetime, 0);
}
}

Private Final class Dateonclick implements onclicklistener{
public void OnClick (View v) {
Datetimepickerdialog Datetimepickdialog = new Datetimepickerdialog (
Mainactivity.this);
Datetimepickdialog.datetimepickdialog (date, 1);
}
}

Private Final class Timeonclick implements onclicklistener{
public void OnClick (View v) {
Datetimepickerdialog Datetimepickdialog = new Datetimepickerdialog (
Mainactivity.this);
Datetimepickdialog.datetimepickdialog (time, 2);
}
}
}

After setting the date time control effect is as follows

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.