4.9 动态添加/删除的Spinner菜单--ArrayLi与Widget的依赖性

package com.chaowen;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

public class Ex04_09_add_Spinner extends Activity {
    /** Called when the activity is first created. */
	private static final String[] countriesStr={"北京","上海","天津","重庆"};
	private TextView myTextView;
	private EditText myEditText;
	private Button myButton_add;
	private Button myButton_remove;
	private Spinner mySpinner;
	private ArrayAdapter<String> adapter;
	private List<String> allCountries;
	
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        allCountries=new ArrayList<String>();
        for (int i = 0; i < countriesStr.length; i++) {
			allCountries.add(countriesStr[i]);
		}
        
        
        //new ArrayAdapter对象并将allCountries传入
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,allCountries);
        
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
        
        //以findViewById()取得对象
        myTextView=(TextView)findViewById(R.id.myTextView);
        myEditText=(EditText)findViewById(R.id.myEditText);
        myButton_add=(Button)findViewById(R.id.myButton_add);
        myButton_remove=(Button)findViewById(R.id.myButton_remove);
        mySpinner=(Spinner)findViewById(R.id.mySpinner);
        
        
        //将ArrayAdapter添加Spinner对象中
        mySpinner.setAdapter(adapter);
        
        //将myButton_add添加OnClickListener
        myButton_add.setOnClickListener(new Button.OnClickListener(){
        	
			@Override
			public void onClick(View v) {
				String newCountry=myEditText.getText().toString();
	        	//先比较添加的值是否已存在,不存在才可添加
	        	for (int i = 0; i < adapter.getCount(); i++) {
					if(newCountry.equals(adapter.getItem(i))){
						return;
					}
				}

			    if(!newCountry.equals("")){
			    	//将值添加至adapter
			    	adapter.add(newCountry);
			    	//取得添加的值的位置
			    	int position=adapter.getPosition(newCountry);
			    	mySpinner.setSelection(position);
			    	//将myEditText清空
			    	myEditText.setText("");
			    	
			    }	
			}
        });
        
        
        //将myButton_remove添加OnClickListener
        myButton_remove.setOnClickListener(new Button.OnClickListener(){

			@Override
			public void onClick(View v) {
                if(mySpinner.getSelectedItem()!=null){
                	//删除mySpinner的值
                	adapter.remove(mySpinner.getSelectedItem().toString());
                	//将myEditText清空
                	myEditText.setText("");
                	if(adapter.getCount()==0){
                		//将myTextView清空
                		myTextView.setText("");
                		
                	}
                }  
			}
        	
        });
        
        
        //将mySpinner添加OnItemSelectedListener
        mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){

			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
			     //将所选mySpinner的值带入myTextView中
				myTextView.setText(arg0.getSelectedItem().toString());
				
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
				
			}
        	
        });
    }
}

  main.xml

 <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@drawable/white"
  >
  <TextView  
  android:id="@+id/myTextView"
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:text="@string/title"
  android:textColor="@drawable/black"
  >
  </TextView>
  <EditText
  android:id="@+id/myEditText"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"  
  >
  </EditText>
  <Button
  android:id="@+id/myButton_add"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"  
  android:text="新增"    
  >
  </Button>
  <Button  
  android:id="@+id/myButton_remove"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content" 
  android:text="移除"   
  >
  </Button>
  <Spinner 
  android:id="@+id/mySpinner"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"  
  >
  </Spinner>
  
  
</LinearLayout>

   
4.9 动态添加/删除的Spinner菜单--ArrayLi与Widget的依赖性