安卓作業----慕課移動互聯網開發第五課作業spinner實現省市區三級聯動

這是中國大學慕課移動終端應用開發的網課作業5,我會持續更新我的作業,如果有需要關注一下吧

這裏我只能說完成了三級聯動的效果,當然這並不是一個好的解決方法,但是已經滿足作業要求。所以,僅供參考。

效果圖

在這裏插入圖片描述

代碼參考

佈局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="省市區三級聯動"
        android:textSize="30dp"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:orientation="horizontal">
        <Spinner
            android:id="@+id/spinner1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1">
        </Spinner>

        <Spinner
            android:id="@+id/spinner2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1">
        </Spinner>

        <Spinner
            android:id="@+id/spinner3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1">
        </Spinner>

    </LinearLayout>

</LinearLayout>

邏輯代碼:

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    private Spinner mSpinner1,mSpinner2,mSpinner3;

    private ArrayList<String> sheng;
    private Map<String,ArrayList<String>> shengShiMap = new HashMap<>();
    private ArrayList<String> shi;
    private Map<String,ArrayList<String>> shiQuMap = new HashMap<>();
    private ArrayList<String> qu;
    private ArrayAdapter<String> mStringArrayAdapter1;
    private ArrayAdapter<String> mStringArrayAdapter2;
    private ArrayAdapter<String> mStringArrayAdapter3;

    private String strSheng = "";
    private String strShi = "";
    private String strqu = "";

    private void init(){
        mSpinner1 = findViewById(R.id.spinner1);
        mSpinner2 = findViewById(R.id.spinner2);
        mSpinner3 = findViewById(R.id.spinner3);

        sheng = new ArrayList<>();
        sheng.add("江蘇省");
        sheng.add("安徽省");
        //處理江蘇省內的市
        shi = new ArrayList<>();
        shi.add("無錫市");
        shi.add("蘇州市");
        shengShiMap.put("江蘇省",shi);
        shi = null;
        //處理安徽省內的市
        shi = new ArrayList<>();
        shi.add("合肥市");
        shi.add("六安市");
        shengShiMap.put("安徽省",shi);
        shi = null;

        //處理無錫市
        qu = new ArrayList<>();
        qu.add("錫山區");
        qu.add("惠山區");
        qu.add("江陰市");
        shiQuMap.put("無錫市",qu);
        qu = null;

        //處理蘇州市
        qu = new ArrayList<>();
        qu.add("虎丘區");
        qu.add("吳中區");
        shiQuMap.put("蘇州市",qu);
        qu = null;

        //處理合肥市
        qu = new ArrayList<>();
        qu.add("肥西縣");
        qu.add("肥東縣");
        shiQuMap.put("合肥市",qu);
        qu = null;

        //處理六安市
        qu = new ArrayList<>();
        qu.add("金安區");
        qu.add("裕安區");
        shiQuMap.put("六安市",qu);
        qu = null;

        mStringArrayAdapter1 = new ArrayAdapter<>(MainActivity.this,android.R.layout.simple_dropdown_item_1line,sheng);
        mSpinner1.setAdapter(mStringArrayAdapter1);

        mStringArrayAdapter2 = new ArrayAdapter<>(MainActivity.this,android.R.layout.simple_dropdown_item_1line,shengShiMap.get("江蘇省"));
        mSpinner2.setAdapter(mStringArrayAdapter2);

        mStringArrayAdapter3 = new ArrayAdapter<>(MainActivity.this,android.R.layout.simple_dropdown_item_1line,shiQuMap.get("無錫市"));
        mSpinner3.setAdapter(mStringArrayAdapter3);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();

        mSpinner1.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                //獲取選取的是哪個省
                String str1 = parent.getItemAtPosition(position).toString();

                mStringArrayAdapter2 = new ArrayAdapter<>(MainActivity.this,android.R.layout.simple_dropdown_item_1line,shengShiMap.get(str1));
                mSpinner2.setAdapter(mStringArrayAdapter2);

                mStringArrayAdapter3 = new ArrayAdapter<>(MainActivity.this,android.R.layout.simple_dropdown_item_1line,shiQuMap.get(shengShiMap.get(str1).get(0)));
                mSpinner3.setAdapter(mStringArrayAdapter3);


                strSheng = str1;
                strShi = shengShiMap.get(str1).get(0);
                strqu = shiQuMap.get(shengShiMap.get(str1).get(0)).get(0);

                String text = strSheng+strShi+strqu;
                Toast.makeText(MainActivity.this,text,Toast.LENGTH_SHORT).show();
            }

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

            }
        });

        mSpinner2.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                //獲取某個市的值
                String str = parent.getItemAtPosition(position).toString();
                mStringArrayAdapter3 = new ArrayAdapter<>(MainActivity.this,android.R.layout.simple_dropdown_item_1line,shiQuMap.get(str));
                mSpinner3.setAdapter(mStringArrayAdapter3);

                strShi = str;
                strqu = shiQuMap.get(str).get(0);

                String text = strSheng+strShi+strqu;
                Toast.makeText(MainActivity.this,text,Toast.LENGTH_SHORT).show();
            }

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

            }
        });

        mSpinner3.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String str = parent.getItemAtPosition(position).toString();
                strqu = str;

                String text = strSheng+strShi+strqu;
                Toast.makeText(MainActivity.this,text,Toast.LENGTH_SHORT).show();
            }

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

            }
        });
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章