Android實(shí)現(xiàn)省市區(qū)三級聯(lián)動(dòng)
針對AdapterView的拓展使用,Spinner實(shí)現(xiàn)省市區(qū)的三級聯(lián)動(dòng),具體內(nèi)容如下
其主要是通過使用Spinner的setOnItemSelectListener來實(shí)現(xiàn)。
代碼示例:
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.testspinnerprovince.MainActivity"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="@string/selection"
android:padding="6dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:orientation="horizontal">
<Spinner
android:id="@+id/provinceSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Spinner
android:id="@+id/citySpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Spinner
android:id="@+id/countySpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
<TextView
android:id="@+id/show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:padding="6dp"
android:layout_marginTop="80dp"
android:text="@string/selected"/>
</LinearLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
private TextView show;
private Spinner provinceSpinner;//省級
private Spinner citySpinner;//市級
private Spinner countySpinner;//區(qū)級
private String[] province = new String[]{"北京","上海","天津","廣東"};
private String[][] city = new String[][]{
{"東城區(qū)","西城區(qū)","崇文區(qū)","宣武區(qū)","朝陽區(qū)","海淀區(qū)","豐臺區(qū)","石景山區(qū)","門頭溝區(qū)",
"房山區(qū)","通州區(qū)","順義區(qū)","大興區(qū)","昌平區(qū)","平谷區(qū)","懷柔區(qū)","密云縣","延慶縣"},
{"長寧區(qū)","靜安區(qū)","普陀區(qū)","閘北區(qū)","虹口區(qū)"},
{"和平區(qū)","河?xùn)|區(qū)","河西區(qū)","南開區(qū)","河北區(qū)","紅橋區(qū)","塘沽區(qū)","漢沽區(qū)","大港區(qū)","東麗區(qū)"},
{"廣州","深圳","韶關(guān)"}};
private String[][][] county = new String[][][]{{
//北京
{"無"},{"無"},{"無"},{"無"},{"無"},{"無"},{"無"},{"無"},{"無"},{"無"},{"無"},
{"無"},{"無"},{"無"},{"無"},{"無"},{"無"},{"無"},},{
//上海
{"無"},{"無"},{"無"},{"無"},{"無"},},{
//天津
{"無"},{"無"},{"無"},{"無"},{"無"},{"無"},{"無"},{"無"},{"無"},{"無"},},{
//廣東
{"海珠區(qū)","荔灣區(qū)","越秀區(qū)","白云區(qū)","蘿崗區(qū)","天河區(qū)","黃浦區(qū)","花都區(qū)","從化市","增城市"
,"番禺區(qū)","南沙區(qū)"},
{"寶安區(qū)","福田區(qū)","龍崗區(qū)","羅湖區(qū)","南山區(qū)","鹽田區(qū)"},
{"武江區(qū)","湞江區(qū)","曲江區(qū)","樂昌市","南雄市","始興縣","仁化縣","翁源縣","新豐縣","乳源縣"}
}
};
//Spinner想要填充肯定需要適配器
private ArrayAdapter<String> provinceAdapter;
private ArrayAdapter<String> cityAdapter;
private ArrayAdapter<String> countyAdapter;
private int provicePosition;//省級選中索引
private int cityPosition;//市級選中索引
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();//初始化
}
//控件初始化
private void initViews() {
provinceSpinner = (Spinner) findViewById(R.id.provinceSpinner);
citySpinner = (Spinner) findViewById(R.id.citySpinner);
countySpinner = (Spinner) findViewById(R.id.countySpinner);
show = (TextView) findViewById(R.id.show);
//初始化適配器及顯示的內(nèi)容
provinceAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,province);
provinceSpinner.setAdapter(provinceAdapter);
//對省級下拉實(shí)現(xiàn)監(jiān)聽,市級下拉需要根據(jù)不同的省級顯示不同內(nèi)容。
provinceSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//需要在item選中省級的時(shí)候,動(dòng)態(tài)的改變市級對應(yīng)的顯示
cityAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_spinner_item,city[position]);
//設(shè)置二級下拉列表當(dāng)中選項(xiàng)內(nèi)容適配器
citySpinner.setAdapter(cityAdapter);
//記錄當(dāng)前的省級索引位置,留給下面修改縣級進(jìn)行適配使用
provicePosition = position;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
//市級下拉監(jiān)聽
citySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//需要在item選中市級的時(shí)候,動(dòng)態(tài)的改變縣級對應(yīng)的顯示
countyAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_spinner_item,county[provicePosition][position]);//首先確定是哪個(gè)省的。
//設(shè)置二級下拉列表當(dāng)中選項(xiàng)內(nèi)容適配器
countySpinner.setAdapter(countyAdapter);
show.setText("選中的城市為:"+ province[provicePosition] + city[provicePosition][position]);
cityPosition = position;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
//區(qū)級的下拉
countySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
show.setText("選中的城市為:"+ province[provicePosition] + city[provicePosition][cityPosition]
+ county[provicePosition][cityPosition][position]);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
運(yùn)行結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android PickerView實(shí)現(xiàn)三級聯(lián)動(dòng)效果
- 最好用的Android省市區(qū)三級聯(lián)動(dòng)選擇效果
- Android日期選擇器實(shí)現(xiàn)年月日三級聯(lián)動(dòng)
- Android中使用開源框架Citypickerview實(shí)現(xiàn)省市區(qū)三級聯(lián)動(dòng)選擇
- Android自定義WheelView地區(qū)選擇三級聯(lián)動(dòng)
- Android省市區(qū)三級聯(lián)動(dòng)控件使用方法實(shí)例講解
- android-wheel控件實(shí)現(xiàn)三級聯(lián)動(dòng)效果
- Android使用android-wheel實(shí)現(xiàn)省市縣三級聯(lián)動(dòng)
- Android實(shí)現(xiàn)聯(lián)動(dòng)下拉框 下拉列表spinner的實(shí)例代碼
- Android實(shí)現(xiàn)城市選擇三級聯(lián)動(dòng)
相關(guān)文章
Android輔助功能實(shí)現(xiàn)自動(dòng)搶紅包(附源碼)
本篇文章主要介紹了Android輔助功能實(shí)現(xiàn)自動(dòng)搶紅包(附源碼),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
Android?APN數(shù)據(jù)庫查詢對比分析(APN案例)
文章詳細(xì)介紹了Android中APN數(shù)據(jù)查詢的實(shí)現(xiàn)方式,文章說明了如何避免在主線程進(jìn)行IO操作,從而提高應(yīng)用的響應(yīng)性和用戶體驗(yàn),感興趣的朋友一起看看吧2025-03-03
android實(shí)現(xiàn)雙日期選擇控件(可隱藏日,只顯示年月)
本篇文章主要介紹了android實(shí)現(xiàn)雙日期選擇控件(可隱藏日,只顯示年月) ,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-01-01
Android實(shí)現(xiàn)自定義的衛(wèi)星式菜單(弧形菜單)詳解
相信大家經(jīng)常在應(yīng)用中會看到衛(wèi)星菜單,那么這篇文章就來介紹在Android中如何實(shí)現(xiàn)自定義的衛(wèi)星式菜單(弧形菜單),有需要的可以參考學(xué)習(xí)。2016-08-08
簡述Android中實(shí)現(xiàn)APP文本內(nèi)容的分享發(fā)送與接收方法
本篇文章主要對Android中實(shí)現(xiàn)APP文本內(nèi)容的分享發(fā)送與接收方法進(jìn)行介紹,相信對大家學(xué)習(xí)會有很好的幫助,需要的朋友一起來看下吧2016-12-12
Android進(jìn)階從字節(jié)碼插樁技術(shù)了解美團(tuán)熱修復(fù)實(shí)例詳解
這篇文章主要為大家介紹了Android進(jìn)階從字節(jié)碼插樁技術(shù)了解美團(tuán)熱修復(fù)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
Android實(shí)現(xiàn)底部導(dǎo)航欄效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)底部導(dǎo)航欄效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Retrofit2.0 實(shí)現(xiàn)圖文(參數(shù)+圖片)上傳方法總結(jié)
本篇文章主要介紹了Retrofit2.0 實(shí)現(xiàn)圖文(參數(shù)+圖片)上傳方法總結(jié),具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08
Android11文件管理權(quán)限申請?jiān)敿?xì)介紹
大家好,本篇文章主要講的是Android11文件管理權(quán)限申請?jiān)敿?xì)介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12

