级联顾名思义:就是说在第一个下拉菜单中选择某一项,相级联的第二个下拉菜单会有相应的项供选择,这种情况多出现在“选取省份,再选取市区”,因为选取某一个省份,就会有它相应的市区,下面我写的例子是我自己程序中用到的,是选取相应的校区,再选取相应的教学楼,仅供参考,学会如何使用spinner级联即可。
private Spinner sp1;
private Spinner sp2;
private Spinner sp3;
private ArrayAdapter<String>
adapter1;
private ArrayAdapter<String>
adapter2;
private int sp1_flag = 0;//记录选择的校区
private int sp2_flag = 0;//记录选择的教学楼,初始为默认项
private int sp3_flag = 0;//记录选择的节次
private Context context;
private static final String[] queuilist = { "本部", "宏福" };
private static final String[] default_linfo = {
"教一", "教二", "教三", "教四","全部"};
private static final String[][] queu_info = new String[][]
{
{ "教一", "教二", "教三", "教四","全部"}, { "教一", "教二", "全部"} };
@Override
protected void onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//程序运行时,调用的起始(主)界面
//下拉菜单
context = this;
sp1 = (Spinner) findViewById(R.id.spinner1);
//
将可选内容与ArrayAdapter连接起来
adapter1 = new
ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,
queuilist);//初始为本部
//
设置下拉列表的风格
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//
将adapter
添加到spinner中
sp1.setAdapter(adapter1);
//
添加事件Spinner事件监听
sp1.setOnItemSelectedListener(new
OnItemSelectedListener(){
public void
onItemSelected(AdapterView<?> arg0,
View arg1, int arg2,long arg3) {
//int pos =
sp1.getSelectedItemPosition();//获取被点击的是在第几行,也可直接用arg2
adapter2 =
new
ArrayAdapter<String>(context,android.R.layout.simple_spinner_item,
queu_info[arg2]);
sp2.setAdapter(adapter2);
sp1_flag =
arg2;//存储相应的第几项
}
public void
onNothingSelected(AdapterView<?>
arg0) {
}
});
sp1.setVisibility(View.VISIBLE);//
设置默认值
sp2 = (Spinner) findViewById(R.id.spinner2);
adapter2 = new
ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,
default_linfo);//初始为本部校区
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp2.setAdapter(adapter2);
sp2.setOnItemSelectedListener(new
OnItemSelectedListener(){
public void
onItemSelected(AdapterView<?> arg0,
View arg1, int arg2,long arg3) {
sp2_flag = arg2;
}
public void
onNothingSelected(AdapterView<?>
arg0) {
}
});
sp2.setVisibility(View.VISIBLE);
sp3 =
(Spinner) findViewById(R.id.spinner3);//得到Spinner对象
ArrayAdapter<CharSequence> adapter3 =
ArrayAdapter.createFromResource(
this, R.array.three_arry,
android.R.layout.simple_spinner_item);
adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp3.setAdapter(adapter3);//绑定适配器
sp3.setOnItemSelectedListener(new OnItemSelectedListener()
{
public void
onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
sp3_flag = position;
}
public void
onNothingSelected(AdapterView<?>
parent) {
//点击进行相应操作(未选中下拉菜单中选项时进行的操作,一般不会用到)
}
});
}
sp3的内容是存储在xml文件中:
1、在建立sp3那个java文件对应的xml文件中相应的代码:
<!-- 通过prompt属性设置展开后的Spinner的标题,要注意的是,一定要通过引用资源文件中的字符串来实现
-->
<Spinner
android:id="@+id/spinner3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView4"
android:layout_centerHorizontal="true"
android:prompt="@string/three_prompt" />
2、引用了资源文件,所以预先资源文件strings.xml中要写入:
<string name="three_prompt">选择节次</string>
<string-array name="three_arry">
<item>第1,2节</item>
<item>第3,4节</item>
<item>第5,6节</item>
<item>第7,8节</item>
<item>第9,10节</item>
<item>全部</item>
</string-array>