第22章、OnItemSelectedListener事件与二级联动(从零开始学Android)

  在Android App应用中,二级联动是应用极为广泛的,我们在上一章的基础上来学习一下如何实现。

  基本知识点:OnItemSelectedListener事件

一、界面

   1、新建province.xml件。

  在“res/values”位置新建province.xml文件。

  (1)province.xml文件位置如下图所示:

  

  (2)province.xml内容如下:  

  

  (3)代码  

[html] view plain copy print ?
  1. xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <string-array name="provarray">
  4. <item>河南省item>
  5. <item>河北省item>
  6. <item>山东省item>
  7. <item>山西省item>
  8. string-array>
  9. resources>

   
    
        河南省
        河北省
        山东省
        山西省
        

  2、打开“res/layout/activity_main.xml”文件。

   (1)分别从工具栏向activity拖出2个下拉列表框Spinner。控件来自Form Widgets。

  

  (2)打开activity_main.xml文件。   




    

    

 

  3、界面如下

  

二、OnItemSelectedListener事件 

  1、打开“src/com.genwoxue.twolevelmenu/MainActivity.java”文件。

  然后输入以下代码:

package com.genwoxue.twolevelmenu;

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


public class MainActivity extends Activity {

	//声明Spinner对像
	private Spinner spinProvince=null;
	private Spinner spinCity=null;
	//定义城市数据,用于二级菜单
	private String[][] arrCity=new String[][]{
		{"郑州","开封","洛阳","安阳"},
		{"石家庄","保定","邯郸","张家口"},
		{"济南","青岛","烟台","日照"},
		{"太原","晋中","吕梁","临汾"}};
	//声明数组适配器,用来填充城市列表
	private ArrayAdapter adapterCity=null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//获取Spinner对象
		spinProvince=(Spinner)super.findViewById(R.id.province);
		spinCity=(Spinner)super.findViewById(R.id.city);
		//为spinProvince控件注册OnItemSelected监听器
		spinProvince.setOnItemSelectedListener(new ProvOnItemSelectedListener());
		//为spinCity控件注册OnItemSelected监听器
		spinCity.setOnItemSelectedListener(new CityOnItemSelectedListener());
		}

	//OnItemSelected监听器
	private class  ProvOnItemSelectedListener implements OnItemSelectedListener{	
		//选择省份,触发城市下拉列表框
		@Override
		public void onItemSelected(AdapterView adapter,View view,int position,long id) {
			//使用ArrayAdapter转换数据
			MainActivity.this.adapterCity=new ArrayAdapter(
					MainActivity.this,
					android.R.layout.simple_spinner_item,
					MainActivity.this.arrCity[position]);
			//使用adapterCity数据适配器填充spinCity
			MainActivity.this.spinCity.setAdapter(MainActivity.this.adapterCity);
		
		}

		@Override
		public void onNothingSelected(AdapterView arg0) {
			//没有选择时执行
		}
	}
	//OnItemSelected监听器
	private class CityOnItemSelectedListener implements OnItemSelectedListener{    
		//选择城市,触发显示选择的城市
        @Override  
        public void onItemSelected(AdapterView adapter,View view,int position,long id) {  
            //获取选择的项的值   
            String sInfo=adapter.getItemAtPosition(position).toString();  
            Toast.makeText(getApplicationContext(), sInfo, Toast.LENGTH_LONG).show();             
        }    
        @Override  
        public void onNothingSelected(AdapterView arg0) {  
        	//没有选择时执行              
        }  
    }  
}

 

  2、最终效果如下:

    

 

你可能感兴趣的:(Android,从零开始学Android)