第31页
android.R.layout.simple_list_item_single_choice,ctype);
/**********************************************************************************/
setListAdapter(adapter) ; //设置该窗口中显示的列表
}
}
(2)为了在单击ListView的各列表项时获取选择项的值,需要重写父类中的onListItemClick()方法,具体代码如下:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String result = l.getItemAtPosition(position).toString(); //获取选择项的值
Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
}
}
运行本实例,将显示如图3.27所示的运行结果。
图3.27 通过继承ListActivity来实现列表视图
3.3.7 日期、时间拾取器
为了让用户能够选择日期和时间,Android提供了日期、时间拾取器,分别是DatePicker组件和TimePicker组件。这两个组件使用比较简单,可以在Eclipse的可视化界面设计器中,选择对应的组件并拖曳到布局文件中。为了可以在程序中获取用户选择的日期、时间,还需要为DatePicker和TimePicker组件添加事件监听器。其中,DatePicker组件对应的事件监听器是OnDateChangedListener,而TimePicker组件对应的事件监听器是OnTimeChangedListener。
下面通过一个具体的实例来说明日期、时间选择器的具体应用。
例3.21 在Eclipse中创建Android项目,名称为3.21,在屏幕中添加日期、时间拾取器,并实现在改变日期或时间时,通过消息提示框显示改变后的日期或时间。(实例位置:光盘\TM\sl\3\3.21)
(1)在新建项目的布局文件main.xml中,添加日期、时间拾取器,关键代码如下:
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
(2)在主活动MainActivity的onCreate()方法中,获取日期拾取组件和时间拾取组件,并将时间拾取组件设置为24小时制式显示,具体代码如下:
DatePicker datepicker=(DatePicker)findViewById(R.id.datePicker1); //获取日期拾取组件
TimePicker timepicker=(TimePicker)findViewById(R.id.timePicker1); //获取时间拾取组件
timepicker.setIs24HourView(true);
(3)创建一个日历对象,并获取当前年、月、日、小时和分钟数,具体代码如下:
Calendar calendar=Calendar.getInstance();
year=calendar.get(Calendar.YEAR); //获取当前年份
month=calendar.get(Calendar.MONTH); //获取当前月份
day=calendar.get(Calendar.DAY_OF_MONTH); //获取当前日
hour=calendar.get(Calendar.HOUR_OF_DAY); //获取当前小时数
minute=calendar.get(Calendar.MINUTE); //获取当前分钟数
(4)初始化日期拾取组件,并在初始化时为其设置OnDateChangedListener事件监听器,以及为时间拾取组件添加事件监听器,具体代码如下:
//初始化日期拾取器,并在初始化时指定监听器
datepicker.init(year, month, day, new OnDateChangedListener(){
@Override
public void onDateChanged(DatePicker arg0,int year,int month,int day){
MainActivity.this.year=year; //改变year属性的值
MainActivity.this.month=month; //改变month属性的值
MainActivity.this.day=day; //改变day属性的值
show(year,month,day,hour,minute); //通过消息框显示日期和时间
}
});
//为时间拾取器设置监听器
timepicker.setOnTimeChangedListener(new OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
MainActivity.this.hour= hourOfDay; //改变hour属性的值
MainActivity.this.minute=minute; //改变minute属性的值
show(year,month,day, hourOfDay,minute); //通过消息框显示选择的日期和时间
}
});
(5)编写show()方法,用于通过消息框显示选择的日期和时间,具体代码如下:
private void show(int year,int month,int day,int hour,int minute){
String str=year+"年"+(month+1)+"月"+day+"日 "+hour+":"+minute; //获取拾取器设置的日期和时间
Toast.makeText(this, str, Toast.LENGTH_SHORT).show(); //显示消息提示框