`
chenhaodejia
  • 浏览: 112429 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何使用Spinner实现省市的二级联动功能

阅读更多

1.确定我需要的数据放到res/values/arrays.xml文件(定义数组)

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string-array name="province">
        <item>-省份-</item>
  <item>河北省</item>
  <item>山西省</item>    
  <item>北京市</item> 
  </string-array>
  <string-array name="hb">
        <item>-城市-</item>
  <item>承德市</item>
  <item>邯郸市</item>    
  <item>廊坊市</item> 
  </string-array>
   <string-array name="bj">
         <item>-城市-</item>
  <item>海淀区</item>
  <item>朝阳区</item>    
  <item>崇文区</item> 
</string-array>
<string-array name="shx">
     <item>-城市-</item>
  <item>大同市</item>
  <item>临汾市</item>
</string-array>
</resources>

2.编写xml界面res/values/main.xml文件(编写界面)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
  <TextView 
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:id="@+id/textView"
      />
<RelativeLayout
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     >    
  <Spinner
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/province"
      />
       <Spinner
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_toRightOf="@id/province"
      android:id="@+id/city"
      />
       </RelativeLayout>
</LinearLayout>

3.在Activity中实现省市联动功能

/**
* 通过Spinner实现省市(两级)联动
* @author 黑色天空
*/
public class MainActivity extends Activity {
private TextView textView ;
private Spinner province;
private Spinner city;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        //String[] provinces = new String[]{"-省份-","河北省","山西省","北京"};
        textView = (TextView)this.findViewById(R.id.textView);
        province = (Spinner)this.findViewById(R.id.province);
        city = (Spinner)this.findViewById(R.id.city);
       

        //(处理省的显示)
        //将可选内容与ArrayAdapter的连接(从资源数组文件中获取数据)
        ArrayAdapter<CharSequence> adapter =
             ArrayAdapter.createFromResource(this, R.array.province, android.R.layout.simple_spinner_item);
         //new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, provinces);
        //设置下拉列表的风格
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       
        //将数据绑定到Spinner视图上
        province.setAdapter(adapter);
       
        //添加条目被选中监听器
        province.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
           
   @Override
   public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {
    //parent既是province对象
    Spinner spinner = (Spinner)parent;
    String pro =  (String)spinner.getItemAtPosition(position);

    //(处理省的市的显示)
    //将默认值与ArrayAdapter连接(从资源数组文件中获取数据)
    ArrayAdapter<CharSequence> cityAdapter = ArrayAdapter.createFromResource
                   (MainActivity.this, R.array.citydefault, android.R.layout.simple_spinner_item);
     //new  ArrayAdapter<CharSequence>
          //           (MainActivity.this,android.R.layout.simple_spinner_item, cities);
    //获取所在省含有哪些市(从资源数组文件中获取数据)
    if(pro.equals("河北省")){
    
     cityAdapter = ArrayAdapter.createFromResource
                (MainActivity.this, R.array.hb, android.R.layout.simple_spinner_item);
    }else if(pro.equals("北京市")){
    
     cityAdapter = ArrayAdapter.createFromResource
                (MainActivity.this, R.array.bj, android.R.layout.simple_spinner_item);
    }else if(pro.equals("山西省")){
    
     cityAdapter = ArrayAdapter.createFromResource
                (MainActivity.this, R.array.shx, android.R.layout.simple_spinner_item);
    }
    //绑定数据到Spinner(City)上
    city.setAdapter(cityAdapter);
   }

   @Override
   public void onNothingSelected(AdapterView<?> parent) {
   
   }
      
        });
    }
}

 

:博客涉及的源码请在千寻资源库www.qxzyk.com 下载获取,谢谢支持。

分享到:
评论

相关推荐

    spinner实现省市二级联动

    本示例主要讲解如何利用Spinner实现省市二级联动的功能,这是一个在许多应用中都需要用到的功能,如地址填写、定位服务等。下面将详细介绍这个过程。 首先,我们需要明白什么是二级联动。二级联动是指在一个选择框...

    android控件之 spinner 实现省市二级联动 源码

    我是一个android新手,所以一切以简单起步。...如果您正在学习这个控件,需要实现基于这个控件的二级联动效果,不妨使用这个看看. 使用方法:用eclipse导入,假若报错,把平台改为android2.2,jdk1.6就可以了。

    Spinner二级联动下拉菜单

    "Spinner二级联动下拉菜单"是一个更复杂的功能,它涉及到两个Spinner,一个选择省份,另一个根据省份的选择动态加载并显示对应的城市。这个功能的实现涉及到多个知识点,下面将逐一详细讲解。 1. **Spinner基本使用...

    android省市二级联动

    总的来说,实现Android的省市二级联动涉及数据结构设计、UI布局、适配器、网络请求、生命周期管理等多个方面,需要综合运用Android开发的多种技术。在实际项目中,可以根据具体需求进行定制化设计,优化用户体验。

    Android 省市二级联动.rar

    这个"Android 省市二级联动.rar"压缩包很可能包含了一个实现此功能的示例项目,帮助开发者理解如何在自己的应用中实现类似的功能。 首先,省市二级联动的核心在于数据结构的设计。通常,我们会使用树形结构来存储...

    Android 省市二级联动

    在本案例中,我们讨论的是一个实现“省市二级联动”的功能,即用户首先选择省份,然后根据所选省份显示出相应的城市供用户进一步选择。例如,用户可能会看到“四川省-成都市”或“重庆市-渝中区”这样的选项。 要...

    android 城市三级联动

    2. 滑动冲突:如果三级联动使用`EditText`,在展示下级列表时需要处理滑动冲突,确保用户在选择时不会误触发其他`EditText`的焦点改变。 3. 选中反馈:用户在列表中选择一项后,需要更新对应`EditText`的文本内容,...

    spinner二级省市级联

    5. 二级联动:当第二个Spinner的选中事件触发时,重复上述过程,更新第三个Spinner。 6. 注释:为了方便初学者理解,代码中应包含详细注释,解释每一步的作用和实现原理。 在“SpinnerDemo”这个项目中,你可以...

    android 省市二级联动数据

    spProvince = (Spinner)findViewById(R.id.spAddMettingAddressProvince); spCity = (Spinner)findViewById(R.id.spAddMettingAddressCity); ArrayAdapter&lt;CharSequence&gt; aAdapter = ArrayAdapter....

    省市二级spinner

    "省市二级spinner"是一个特定的应用场景,它用于展示中国的省市区两级联动的选择效果,常见于地址输入或区域筛选等场景。这个项目非常适合初学者学习,因为它涉及到基础的Android组件使用、数据处理以及用户交互。 ...

    安卓三级联动省市联动多级联动相关-Android竖直滑动选择器三级联动二级联动.rar

    这个压缩包"安卓三级联动省市联动多级联动相关-Android竖直滑动选择器三级联动二级联动.rar"包含了实现这一功能的相关代码资源。下面将详细解释这个功能的实现原理及关键知识点。 1. **联动选择器**: 联动选择器...

    安卓三级联动省市联动多级联动相关-自己做的安卓开发关于两个spinner联动的实例.rar

    总的来说,实现安卓应用中的三级联动省市联动多级联动,需要理解spinner组件的工作原理,以及如何处理数据和响应用户操作。通过对给定的源码进行学习和参考,开发者可以掌握这一技能并应用到实际项目中。

    安卓省市的二级联动

    实现二级联动的关键在于数据结构的设计和UI组件的正确使用。首先,我们需要一个包含全国所有省份和城市的数据源。这个数据源可以是静态的JSON文件,也可以是从服务器动态获取。每个省都有一个或多个城市与其关联,...

    Android省市区三级联动

    总结,实现Android省市区三级联动需要对数据结构有清晰的理解,掌握UI组件的使用,尤其是Spinner,以及熟悉数据加载和事件监听机制。此外,优化用户体验和处理异常情况也是必不可少的。通过这个功能的实现,开发者...

    iphone风格的省市二级联动

    在Android开发中,为了实现与iPhone类似的用户界面和交互体验,开发者经常需要创建省市二级联动的效果,这在很多应用中都是常见的功能,如地址选择、配送设置等。本知识点主要聚焦于如何在Android平台上实现一个具有...

    Android 省市区三级连动--spinner.rar

    这个压缩包“Android 省市区三级连动--spinner.rar”显然包含了关于如何在Android应用中使用Spinner控件实现这一功能的资源。 Spinner是Android提供的一个下拉选择控件,常用于实现用户在有限选项中进行选择的操作。...

    (省市)二级联动

    压缩包中的"spinner省市二级联动"可能包含了一个完整的示例项目,包括了布局文件、数据源、以及相关的Java代码。通过阅读和分析这些文件,你可以更深入地了解如何在实际开发中应用这种联动机制。

    Android省市两级联动滚动Demo

    在Android开发中,省市两级联动滚动通常用于地址选择器或者搜索定位等功能,用户可以在第一级选择省份,然后根据选择的省份在第二级显示对应的市。这个"Android省市两级联动滚动Demo"是一个典型的实现示例,它展示了...

Global site tag (gtag.js) - Google Analytics