添加时间选择器--DatePicker

这里写图片描述

新建一个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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值