首先,讲省市联动的数据写成<string-array>样式
样式片段为:
<string-array name="provice">
<item >选择省份</item>
<item>北京</item>
<item>天津</item>
<item>河北</item>
<item>山西</item>
<item>内蒙古</item>
<item>辽宁</item>
<item>吉林</item>
<item>黑龙江</item>
<item>上海</item>
<item>江苏</item>
<item>浙江</item>
<item>安徽</item>
<item>福建</item>
<item>江西</item>
<item>山东</item>
<item>河南</item>
<item>湖南</item>
<item>湖北</item>
<item>广西</item>
<item>广东</item>
<item>海南</item>
<item>贵州</item>
<item>重庆</item>
<item>四川</item>
<item>云南</item>
<item>西藏</item>
<item>陕西</item>
<item>甘肃</item>
<item>青海</item>
<item>宁夏</item>
<item>新疆</item>
<item>香港</item>
<item>澳门</item>
<item>台湾</item>
</string-array>
<string-array name="选择省份">
<item>选择市区</item>
</string-array>
<string-array name="北京">
<item>选择市区</item>
<item>东城区</item>
<item>西城区</item>
<item>崇文区</item>
之后在MainActivity中 静态代码块里放入
Class c = R.class;
clazz = c.getDeclaredClasses()[0];
由于反射我也只学个入门,R文件中的第一个静态类是array,所以采用了下标为零的方法。感觉非常愚蠢,这里就抛砖引玉,希望大家能给个好的方法。
之后有两个spinner,一个是省,一个是市
添加监听事件,当省份改变时,获得省份的名字name,
获得相应省份的string-array的ID,
Field field = clazz.getDeclaredField(name);
int cityId = (Integer) field.get(int.class);
填充数据
String[] resource = getResources().getStringArray(cityID);
SpinnerAdapter adapter2 = new ArrayAdapter<String>(
MainActivity.this,android.R.layout.simple_spinner_item,resource);
spinner2.setAdapter(adapter2);