您的位置:首页 > 移动开发 > Android开发

Android总结(四)

2016-04-23 14:14 573 查看
下拉列表框与OnItemSelectedListener

1.联动菜单——就是指提供两个下拉列表,当地一个下拉列表的选项发生改变时,第二个下拉列表也可以显示出与一级下拉列表相关的数据项。

(1)定义城市信息的资源文件----values\city_data.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="city_lables">
<item>中国 - 北京</item>
<item>中国 - 上海</item>
<item>中国 - 广州</item>
</string-array>
</resources>


配置字符串信息:-------values\strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, MySpinnerListenerDemo!</string>
<string name="app_name">下拉列表框事件</string>
<string name="city_prompt">选择你喜欢的城市:</string>
<string name="area_prompt">选择你喜欢的城区:</string>
</resources>


布局文件:----main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Spinner
android:id="@+id/city"
android:prompt="@string/city_prompt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/city_lables"/>
<Spinner
android:id="@+id/area"
android:prompt="@string/city_prompt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>


主程序,实现联动:
public class MySpinnerListenerDemo extends Activity {
private Spinner city = null; // 下拉列表框内容
private Spinner area = null; // 二级列表
private String[][] areaData = new String[][] {
{ "东城", "西城", "朝阳", "大兴", "平谷" }, // 针对于一级的子信息
{ "黄浦", "杨浦", "闵行" }, // 针对于二级的子信息
{ "广州" } // 针对于三级的子信息
}; // 子菜单项
private ArrayAdapter<CharSequence> adapterArea = null;//下拉列表内容适配器

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
this.city = (Spinner) super.findViewById(R.id.city); // 取得下拉列表框
this.area = (Spinner) super.findViewById(R.id.area); // 取得下拉列表框
this.city.setOnItemSelectedListener(new OnItemSelectedListenerImpl());
}

private class OnItemSelectedListenerImpl implements OnItemSelectedListener {

public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) { // 表示选项改变的时候触发
MySpinnerListenerDemo.this.adapterArea = new ArrayAdapter<CharSequence>(
MySpinnerListenerDemo.this,
android.R.layout.simple_spinner_item,
MySpinnerListenerDemo.this.areaData[position]); // 定义所有的列表项
MySpinnerListenerDemo.this.area
.setAdapter(MySpinnerListenerDemo.this.adapterArea);// 设置二级下拉列表的选项内容
}

public void onNothingSelected(AdapterView<?> arg0) { // 表示没有选项的时候触发
// 一般此方法现在不关心
}
}
}


监听日期与时间的改变

1.日期监听器接口:android.widget.DatePicker.OnDateChangedListener

时间监听器接口:android.widget.TimePicker.OnTimeChangedListener

2.时间的监听用setOnTimeChangedListener()方法;而日期的监听需要使用init()方法。 ##

public class MyDateTimeDemo extends Activity {
private EditText input = null;
private DatePicker date = null;
private TimePicker time = null;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
this.input = (EditText) super.findViewById(R.id.input);
this.date = (DatePicker) super.findViewById(R.id.date);
this.time = (TimePicker) super.findViewById(R.id.time);
this.time.setIs24HourView(true); // 采用24小时制显示时间
this.time.setOnTimeChangedListener(new OnTimeChangedListenerImpl());
this.date.init(this.date.getYear(), this.date.getMonth(),
this.date.getDayOfMonth(), new OnDateChangedListenerImpl());
this.setDateTime(); // 希望一开始可以设置一些文本的内容
}

private class OnTimeChangedListenerImpl implements OnTimeChangedListener {

public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
MyDateTimeDemo.this.setDateTime();
}
}

private class OnDateChangedListenerImpl implements OnDateChangedListener {
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
MyDateTimeDemo.this.setDateTime();
}
}

public void setDateTime() { // 由于日期时间更改之后文本输入组件的内容也要修改
this.input.setText(this.date.getYear() + "-"
+ (this.date.getMonth() + 1) + "-" + this.date.getDayOfMonth()
+ " " + this.time.getCurrentHour() + ":"
+ this.time.getCurrentMinute()); // 修改文本的内容
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: