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

          首先,讲省市联动的数据写成<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);


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值