Date Picker解析

        DatePicker在实际的android开发中是比较常用的一个控件,只要跟日期有关的,我们都可以调用它来为我们设置。官方API中的这个Demo相对简单一些,讲解了怎么调用,怎么为它添加监听器。进入正题:

       Android提供一个小部件来选择一个日期,使用DatePicker小部件,在一个界面允许用户选择年、月、日。

       本教程中,我们将创建一个DatePickerDialog,再一个日期选择器上有一个按钮,当用户点击这个按钮的时候,新的日期将更新到TextView上面。

1、创建一个名为HelloDatePicker的android项目。

2、打开res/layout/activity_main文件,插入下列内容:

<?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="vertical" >
    <TextView
        android:id="@+id/dateDisplay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="" />
    <Button
        android:id="@+id/pickDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Change the date" />
</LinearLayout>
如图,就是一个button+没有定义文本内容的textview。

3、在HelloDatePicker.java类中,声明以下变量 

private TextView mDateDisplay;
	private Button mPickDate;
	private int mYear;
	private int mMonth;
	private int mDay;
	static final int DATE_DIALOG_ID = 0;

最后一个就是定义了一个在调用 Dialog 时作为 ID 的一个值,当我们的请求 ID=0 时,会执行我们指定的操作。在本实例中,由于我们只需要一个Button,也只有一个DatePicker,这个定义与否不影响程序的运行,当然出于规范化和以后的开发,还是按部就班的来。

4、在onCreate()方法中添加下面的内容。

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
		mPickDate = (Button) findViewById(R.id.pickDate);
		mPickDate.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();
	}
这里面先是实例化了mDateDisplay(TextView)跟mPickDate(Button),然后为mPickDate添加了单击事件,这个事件的功能就是调出我们的DatePickerDialog。
后面的一段代码,就是用Calendar获取了当前的系统时期,并且通过updateDisplay()方法,将结果传递到了mDateDisplay(TextView)当中。

5、 编写 updateDisplay() 方法

private void updateDisplay() {
		mDateDisplay.setText(new StringBuilder().						
		append(mMonth+1).append("-").append(mDay)
		.append(	"-").append(mYear).append(" "));
		}

实现把日期传递到mDateDisplay(TextView)当中。

6 、为 DatePickerDialog 添加一个 DatePickerDialog 事件

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();
		}
	};

DatePicker中的值传递到了我们声明的三个日期值当中。


7、 重写onCreateDialog()方法
protected Dialog onCreateDialog(int id) {
		switch (id) {
		case DATE_DIALOG_ID:
			return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,mDay);
		}
		return null;
	}

像前面说的,其实在本实例中完全可以不用定义DATE_DIALOG_ID,因为就只有一个Button,我们也只需要Button实现一个功能,而这实现的功能也只需要一个DatePicker。当然这里是出于规范,毕竟我们在实际的开发中只设置一个Button的情况比较少。在这里简化成这样也是可以的:

protected Dialog onCreateDialog(int id) {
	return new DatePickerDialog(this, mDateSetListener, mYear, 											mMonth,mDay);
		}

8、这样,我们就完成了一个DatePicker的Demo









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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值