在网上搜了好多方法,发现大部分都是利用数组实现,感觉麻烦,于是跟着老师的思路写了一个。
特别注意:本例将数据源写入strings.xml中
难点:注意数据源在strings.xml中的写法,获取数据源的方法,最重要的是初始化适配器参数问题
1.创建数据源
2.初始化Spinner
3.初始化适配器
4.设置适配器
5.设置Spinner的监听器
6.在Spinner的监听器中完成第二个Spinner的适配器设置
布局文件:
<LinearLayout 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:orientation="vertical">
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="50dp"
android:spinnerMode="dropdown"
android:background="#fff"/>
<Spinner
android:layout_marginTop="20dp"
android:id="@+id/spinner2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:spinnerMode="dropdown"
android:background="#fff"/>
</LinearLayout>
strings.xml内容:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Day04spinner</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string-array name ="pro">
<item>河南</item>
<item>北京</item>
<item>江苏</item>
</string-array>
<string-array name ="henan">
<item>安阳</item>
<item>洛阳</item>
<item>南阳</item>
<item>信阳</item>
</string-array>
<string-array name ="beijing">
<item>海淀区</item>
<item>房山区</item>
<item>朝阳区</item>
<item>昌平区</item>
</string-array>
<string-array name ="jiangsu">
<item>昆山</item>
<item>吴江</item>
<item>无锡</item>
</string-array>
</resources>
MainActivity.java
package com.example.day04spinner;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
public class MainActivity extends Activity {
private Spinner spinner1;
private Spinner spinner2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//2.Spinner 控件
spinner1 =(Spinner) findViewById(R.id.spinner1);
spinner2 =(Spinner) findViewById(R.id.spinner2);
//xml中的数据源
String []content=getResources().getStringArray(R.array.pro);
//3.初始化适配器
ArrayAdapter<String> arrayadapter1=new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item,content);
//4.将适配器中的数据Set到spinner中
spinner1.setAdapter(arrayadapter1);
//5.给Spinner设置监听器
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
if(0==position){
//6.第一个Spinner的监听器中给第二个Spinner设置适配器
String[]content2=getResources().getStringArray(R.array.henan);
ArrayAdapter<String> arrayadapter2=new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item,content2);
spinner2.setAdapter(arrayadapter2);
}else if(1==position){
String[]content2=getResources().getStringArray(R.array.beijing);
ArrayAdapter<String> arrayadapter2=new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item,content2);
spinner2.setAdapter(arrayadapter2);
}else if(2==position){
String[]content2=getResources().getStringArray(R.array.jiangsu);
ArrayAdapter<String> arrayadapter2=new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item,content2);
spinner2.setAdapter(arrayadapter2);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}