Android实现二级联动,二级联动是非常常见实用的功能,用的比较多的就是地址选择了,今天就给大家讲讲如何实现:

效果图:

效果图:

Android实现二级联动


Android实现二级联动



布局文件:
[html] view plain copy 
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout  
    xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:app="http://schemas.android.com/apk/res-auto"  
    android:orientation="vertical"  
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"  
    android:layout_height="match_parent" tools:context="com.example.testandroid_0610.MainActivity">  
  
    <Spinner  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"  
        android:id="@+id/s_main_spinner"  
        ></Spinner>  
    <Spinner  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"  
        android:id="@+id/s_main_spinnerTwo"  
        ></Spinner>  
  
</LinearLayout>  


java代码:
 
[html] view plain copy
package com.example.testandroid_0610;  
  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.view.View;  
import android.widget.AdapterView;  
import android.widget.ArrayAdapter;  
import android.widget.AutoCompleteTextView;  
import android.widget.MultiAutoCompleteTextView;  
import android.widget.SimpleAdapter;  
import android.widget.Spinner;  
  
import java.util.ArrayList;  
import java.util.HashMap;  
import java.util.List;  
import java.util.Map;  
  
public class MainActivity extends AppCompatActivity {  
  
    private Spinner s_main_spinner;  
    private Spinner s_main_spinnerTwo;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        //获取控件  
        s_main_spinner = (Spinner) findViewById(R.id.s_main_spinner);  
        s_main_spinnerTwo = (Spinner) findViewById(R.id.s_main_spinnerTwo);  
  
        //设置省份  
        final String provinces[]={"湖南省","河南省","海南省"};  
        //给省份设置图标  
        int images[]={R.mipmap.bird,R.mipmap.cat,R.mipmap.chicken};  
        //添加市  
        final Map<String,String[]> citys=new HashMap<String, String[]>();  
        citys.put("湖南省",new String[]{"长沙市","衡阳市","益阳市"});  
        citys.put("河南省",new String[]{"郑州市","许昌市","周口市"});  
        citys.put("海南省",new String[]{"海口市","三亚市","文昌市"});  
  
        //将图标添加进集合  
        List<Map<String,Object>> list=new ArrayList<>();  
        for (int i = 0; i < provinces.length; i++) {  
            Map<String,Object> map=new HashMap<>();  
            map.put("title",provinces[i]);  
            map.put("image",images[i]);  
            list.add(map);  
        }  
  
        //适配器  
        SimpleAdapter adapterSpinner=new SimpleAdapter(this,list,android.R.layout.activity_list_item,new String[]{"title","image"},new int[]{android.R.id.text1,android.R.id.icon});  
        //上面适配器引用的是系统布局,所以需要按照系统布局的方式来排列  
        s_main_spinner.setAdapter(adapterSpinner);  
  
        //给下拉列表设置选择事件  
        s_main_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {  
            @Override  
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {  
                //先根据下标拿到省份,再根据拿到的省份去集合中拿到市  
                String city[]=citys.get(provinces[position]);  
                //将拿到的市添加到适配器中  
                ArrayAdapter ada=new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,city);  
                s_main_spinnerTwo.setAdapter(ada);  
            }  
  
            @Override  
            public void onNothingSelected(AdapterView<?> parent) {  
  
            }  
        });  
    }  
}  

相关文章: