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

Android中string-array利用反射实现省市联动

2015-09-18 08:35 483 查看
首先,讲省市联动的数据写成<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);


刚学Android,初次写博客,望大家不吝指点!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: