添加时间选择器--DatePicker

来源:互联网 发布:windows 找不到aero 编辑:程序博客网 时间:2024/06/05 19:32

这里写图片描述

新建一个layout,命名为:common_datetime.xml,代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <DatePicker        android:id="@+id/datepicker"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:calendarViewShown="false" /></LinearLayout>

新建一个类(名为DateTimePickDialogUtil.java)实现接口OnDateChangedListener代码如下

public class DateTimePickDialogUtil implements OnDateChangedListener{    private DatePicker datePicker;    private AlertDialog ad;    private String dateTime;    private String initDate;    private Activity activity;    public DateTimePickDialogUtil(Activity activity, String initDate) {        this.activity = activity;        this.initDate = initDate;        this.dateTime=initDate;    }    //初始化DatePicker    private void init(DatePicker datePicker){        Calendar calendar = Calendar.getInstance();        if (!(null == initDate || "".equals(initDate))) {            calendar = this.getCalendar(initDate);        } else {            initDate = calendar.get(Calendar.YEAR) + "-"                    + calendar.get(Calendar.MONTH) + "-"                    + calendar.get(Calendar.DAY_OF_MONTH);        }        datePicker.init(calendar.get(Calendar.YEAR),                calendar.get(Calendar.MONTH)-1,                calendar.get(Calendar.DAY_OF_MONTH), this);    }    //将字符串YYYY-MM-DD变成年月日    private Calendar getCalendar(String initDate) {        Calendar calendar = Calendar.getInstance();        String s[]=initDate.split("-");        calendar.set(Integer.valueOf(s[0]),Integer.valueOf(s[1]),Integer.valueOf(s[2]));        return calendar;    }    @Override    public void onDateChanged(DatePicker view, 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());        ad.setTitle(dateTime);    }    public AlertDialog datePicKDialog(final TextView inputDate) {        LinearLayout dateTimeLayout = (LinearLayout) activity                .getLayoutInflater().inflate(R.layout.common_datetime, null);        datePicker = (DatePicker) dateTimeLayout.findViewById(R.id.datepicker);        init(datePicker);        ad = new AlertDialog.Builder(activity)                .setTitle(initDate)                .setView(dateTimeLayout)                .setPositiveButton("确定", new DialogInterface.OnClickListener() {                    public void onClick(DialogInterface dialog, int whichButton) {                        inputDate.setText(dateTime);                    }                })                .setNegativeButton("取消", new DialogInterface.OnClickListener() {                    public void onClick(DialogInterface dialog, int whichButton) {                        inputDate.setText(initDate);                    }                }).show();        return ad;    }}

在activity_main.xml中添加控件(button、TextView都可以)
在MainActivity.java添加监听:

final TextView inputDate=(TextView)findViewById(R.id.inputDate);        inputDate.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                new DateTimePickDialogUtil(MainActivity.this,initStartDateTime).datePicKDialog(inputDate);            }        });
阅读全文
0 0
原创粉丝点击