這是中國大學慕課移動終端應用開發的網課作業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) {
}
});
}
}