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

Android基础控件之Spinner下拉列表(三级列表的实现)

2016-06-05 22:07 746 查看
Spinner的三级列表实现,需要考虑到三级适配器的动态绑定,所以我是这么做的

有写的很好的大神,欢迎指点,分享给大家

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#ffffffff"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".ChangeActivity" >

<TextView

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/city" />

<Spinner

android:id="@+id/spinner1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/textView1" />

<TextView

android:id="@+id/tv2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/spinner1"

android:text="@string/proString" />

<Spinner

android:id="@+id/spinner2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/tv2" />

<TextView

android:id="@+id/tv3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/spinner2"

android:text="@string/county" />

<Spinner

android:id="@+id/spinner3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/tv3" />

</RelativeLayout>

package com.example.spinner3;

import android.os.Bundle;

import android.app.Activity;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.Spinner;

public class MainActivity extends Activity

{

    private Spinner provinceSpinner = null;  //省级(省、直辖市)

    private Spinner citySpinner = null;     //地级市

    private Spinner countySpinner = null;    //县级(区、县、县级市)

    ArrayAdapter<String> provinceAdapter = null;  //省级适配器

    ArrayAdapter<String> cityAdapter = null;    //地级适配器

    ArrayAdapter<String> countyAdapter = null;    //县级适配器

    static int provincePosition = 3;

    private String[] province = new String[] {"北京","上海","天津","广东"};//,"重庆","黑龙江","江苏","山东","浙江","香港","澳门"};

    private String[][] city = new String[][] 

            {

                    { "东城区", "西城区", "崇文区", "宣武区", "朝阳区", "海淀区", "丰台区", "石景山区", "门头沟区",

                            "房山区", "通州区", "顺义区", "大兴区", "昌平区", "平谷区", "怀柔区", "密云县",

                            "延庆县" },

                    { "浦东区", "虹桥区", "黄埔区"},

                    { "和平区", "河东区", "河西区", "南开区", "河北区", "红桥区", "塘沽区", "汉沽区", "大港区",

                            "东丽区" },

                    { "广州","珠海","汕头","佛山","湛江"}

            };

 

    private String[][][] county = new String[][][] 

            {

                    {   //北京

                        {"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},

                        {"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"}

                    },

                    {    //上海

                        {"无"},{"无"},{"无"},{"无"},{"无"}

                    },

                    {    //天津

                        {"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"}

                    },

                    {    //广东

                        {"海珠区","增城市","番禺区","南沙区"}, 

                        {"宝安区","福田区","龙岗区"}, 

                        {"武江区","浈江区","曲江区"} 

                    }

            };

    

    @Override

    protected void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_changecity);

        setSpinner();

    }

  /**

   * 设置适配器

   */

    private void setSpinner()

    {        

        provinceSpinner = (Spinner)findViewById(R.id.spinner1);

        citySpinner = (Spinner)findViewById(R.id.spinner2);

        countySpinner = (Spinner)findViewById(R.id.spinner3);

        //绑定适配器和值

        provinceAdapter = new ArrayAdapter<String>(MainActivity.this,

                android.R.layout.simple_spinner_item, province);

        provinceSpinner.setAdapter(provinceAdapter);

        provinceSpinner.setSelection(0,true);  

        cityAdapter = new ArrayAdapter<String>(MainActivity.this, 

                android.R.layout.simple_spinner_item, city[0]);

        citySpinner.setAdapter(cityAdapter);

        citySpinner.setSelection(0,true);  

        countyAdapter = new ArrayAdapter<String>(MainActivity.this,

                android.R.layout.simple_spinner_item, county[0][0]);

        countySpinner.setAdapter(countyAdapter);

        countySpinner.setSelection(0, true);

        

        //省级下拉框监听

        provinceSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()

        {

            // 动态改变地级市绑定适配器的值

            @Override

            public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long arg3)

            {

                //改变二级的值

                cityAdapter = new ArrayAdapter<String>(

                        MainActivity.this, android.R.layout.simple_spinner_item, city[position]);

                // 设置地级适配器

                citySpinner.setAdapter(cityAdapter);

                provincePosition = position;    //记录省级位置

            }

            @Override

            public void onNothingSelected(AdapterView<?> arg0)

            {

            }

        });

        

        //地级下拉监听

        citySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()

        {

            @Override

            public void onItemSelected(AdapterView<?> arg0, View arg1,

                    int position, long arg3)

            {

                countyAdapter = new ArrayAdapter<String>(MainActivity.this,

                        android.R.layout.simple_spinner_item, county[provincePosition][position]);

                countySpinner.setAdapter(countyAdapter);

            }

            @Override

            public void onNothingSelected(AdapterView<?> arg0)

            {

            }

        });

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: