使用Android DatePickerDialog 完成实战需求

一. DatePickerDialog中包含一个DatePicker对象用于以界面形式选择时间,使用弹窗形式显示.

二.需求: 两个TextView用来点击 设置 显示 开始结束时间段

   1.选择开始时间后,结束时间不能选择早于开始时间的设置

   2.选择结束时间后,开始时间不能选择晚于结束时间的设置


@OnClick({R.id.start_time,R.id.close_time})
	public void onClick(View v) {
		switch (v.getId()) {
			case R.id.start_time:
				showDateDialog(1);
				break;

			case R.id.close_time:
				showDateDialog(2);
				break;
		}
	}
	
	String start_time="";
	String end_time="";
	//number参数表示设置 开始:1 或 结束:2 时间
	public void showDateDialog(final int number){
		//获得当前时间 DatePicker默认显示
		Calendar calendar=Calendar.getInstance();
		int year = calendar.get(Calendar.YEAR);
		int month = calendar.get(Calendar.MONTH);
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		//SimpleDateFromat转变表示时间的格式
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		//实例化DatePickerDialog对象 并设置时间选择监听
		DatePickerDialog dp = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
			@Override
			public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
				log(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
				switch (number) {
					case 1:
						//为什么这么设置时间格式? 本人项目服务器要求这么传 哈哈
						start_time = year + "-" + (monthOfYear + 1) + "-" + dayOfMonth;
						break;
					case 2:
						end_time = year + "-" + (monthOfYear + 1) + "-" + dayOfMonth;
						break;
				}
			}
		}, year, month, day);
		//当开始时间已经选则而且是点击结束时间弹出picker
		if(!TextUtils.isEmpty(start_time)&&number==2){
			try {
				Date date=sdf.parse(start_time);
				//设置最小可选择时间
				dp.getDatePicker().setMinDate(date.getTime());
			} catch (ParseException e) {
				e.printStackTrace();
			}

		}
		//当结束时间已经选择而且是点击开始时间弹出的picker
		if(!TextUtils.isEmpty(end_time)&&number==1){
			try {
				Date date=sdf.parse(end_time);
				//设置最大可选择时间
				dp.getDatePicker().setMaxDate(date.getTime());
			} catch (ParseException e) {
				e.printStackTrace();
			}
		}
		dp.show();

	}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值