本人最近在写安卓的一个小项目中需要进行级联操作,比如在listview或spinner中点击某一项时会在另一个listview和spiiner中显示出对应的子项。由于新学安卓,折腾了几天才将这个功能完成。其实在完成之后发现两者的差别并不大。主要在进行选项处理时事件监听的不同,listview为OnItemClickListener,而spiner为OnItemSelectedListener。
现在用代码来详细说明:
package com.android.ListViewTest;
import java.lang.reflect.Array;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity{
private ListView lv_province,lv_city;
private TextView tv_result;
String name;
private Spinner sp_pro,sp_city;
private ArrayAdapter<String> provinceAdapter,cityAdapter;
String[] province_info={"黑龙江", "吉林", "辽宁", "内蒙古", "河北", "山西", "陕西",
"山东", "新疆", "西藏", "青海", "甘肃", "宁夏", "河南", "江苏", "湖北", "浙江",
"安徽", "福建", "江西", "湖南", "贵州", "四川", "广东", "云南", "广西", "海南",
"台湾"};
String [][] city_info= {
{ "哈尔滨", "齐齐哈尔", "牡丹江", "佳木斯", "绥化", "黑河", "大兴安岭", "伊春", "大庆",
"鸡西", "鹤岗", "双鸭山" },
{ "长春", "吉林", "延吉", "四平", "通化", "白城", "辽源", "松原", "白山" },
{ "沈阳", "大连", "鞍山", "抚顺", "本溪", "丹东", "锦州", "营口", "阜新", "辽阳",
"铁岭", "朝阳", "盘锦", "葫芦岛" },
{ "呼和浩特", "包头", "乌海", "集宁", "通辽", "赤峰", "鄂尔多斯", "临河", "锡林浩特",
"海拉尔", "乌兰浩特", "阿拉善左旗" },
{ "石家庄", "保定", "张家口", "唐山", "廊坊", "沧州", "衡水", "邢台", "邯郸", "秦皇岛" },
{ "太原", "大同", "阳泉", "晋中", "长治", "晋城", "临汾", "运城", "朔州", "忻州",
"离石" },
{ "西安", "三原", "延长", "榆林", "渭南", "商洛", "安康", "汉中", "宝鸡", "铜川" },
{ "济南", "青岛", "淄博", "德州", "烟台", "潍坊", "济宁", "泰安"