最近由于工作原因在学习安卓开发,很多东西都是第一次接触。所以学着教程自己也敲了一遍!

动态添加╱删除的Spinner 菜单

① 创建新工程
② 修改mian.xml 布局,添加UI 元素


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/widget92"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
> <
TextView
android:id="@+id/TextView_Show_yourChoice"
android:layout_width="190px"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="25sp"
android:layout_gravity="center_horizontal"
> </TextView>
<EditText
android:id="@+id/EditView_Input"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
> </EditText>
<Button
android:id="@+id/Button_ADD"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="添加"
> </Button>
<Button
android:id="@+id/Button_DEL"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="删除"
> </Button>
<Spinner
android:id="@+id/Spinner_Slecte"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
> </Spinner>
</LinearLayout>



③ 定义创建一个List<T>




/*定义*/
private String[] cities;
private List<String> cityList;
/*初始化字符串数组*/
cities = new String[] { "Android", "BlackBerry", "J2ME", "Symbian",
"Broncho", "LinuxMobile", "Palm", "WindwosMobile" };
/*初始化List实例ArrayList的对象*/
cityList = new ArrayList<String>();
/*遍历,把字符串数组添加到ArrayList中*/
for (int i = 0; i < cities.length; i++) {
cityList.add(cities[i]);
}





④ 定义创建一个ArrayAdapter<String>




/*定义*/
private ArrayAdapter<String> arrayAdapter;
/* 这里应该使用List<> ,如果使用String[]则会出错*/
/*初始化下拉菜单的内容适配器*/
arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, cityList);

⑤ 设置ArrayAdapter<String>在下拉菜单中的显示布局




/*设置下拉菜单显示内容的风格*/
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_
item);





⑥ 给下拉菜单添加内容Adapter 适配器




/*给下拉菜单对象添加内容适配器*/
city_Spinner.setAdapter(arrayAdapter);



⑦ 修改该mainActivity.java,实现动态添加和删除




package com.example.spinner;

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

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
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;
import android.widget.Toast;

public class MainActivity extends Activity implements Button.OnClickListener,
		Spinner.OnItemSelectedListener {

	// 申明程序的使用对象
	private TextView show_yourChoice_TextView;
	private EditText input_city_EditText;
	private Button add_Button, del_Button;
	private Spinner city_Spinner;
	private ArrayAdapter<String> arrayAdapter;
	private String[] cities;
	private String addString;
	private List<String> cityList;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// findViewByID()获取XML中的UI元素
		show_yourChoice_TextView = (TextView) findViewById(R.id.TextView_Show_yourChoice);
		input_city_EditText = (EditText) findViewById(R.id.EditView_Input);
		add_Button = (Button) findViewById(R.id.Button_ADD);
		del_Button = (Button) findViewById(R.id.Button_DEL);
		city_Spinner = (Spinner) findViewById(R.id.Spinner_Select);
		// 初始化字符串数组
		cities = new String[] { "Android", "BlackBerry", "J2ME", "Symbian",
				"Broncho", "LinuxMobile", "Palm", "WindowMobile" };
		// 初始化List实例ArrayList对象
		cityList = new ArrayList<String>();
		// 遍历把字符串数组添加到Arraylist中
		for (int i = 0; i < cities.length; i++) {
			cityList.add(cities[i]);
		}
		// 这里应该使用List<>,如果使用String【】则会出错
		// 初始化下拉菜单的内容适配器
		arrayAdapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_spinner_item, cityList);
		// 设置下拉菜单显示的内容风格
		arrayAdapter
				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		// 给下拉菜单菜单添加内容适配器
		city_Spinner.setAdapter(arrayAdapter);
		// 默认启动时 文本标题显示
		show_yourChoice_TextView.setText(arrayAdapter.getItem(0));
		// 默认启动时,下拉菜单第一项被选中
		city_Spinner.setSelection(0);
		// 为按钮添加点击事件监听器
		add_Button.setOnClickListener(this);
		del_Button.setOnClickListener(this);
		// 为下拉框菜单添加项选中事件监听器
		city_Spinner.setOnItemSelectedListener(this);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		switch (arg0.getId()) {
		// 区别按钮来进行不同动作
		case R.id.Button_ADD:
			// 显示Toast提示
			Toast.makeText(this, "添加", Toast.LENGTH_LONG).show();
			// 获得输入框中的将要添加的字符串
			addString = input_city_EditText.getText().toString();
			// 遍历,比较是否和下拉菜单中的内容重复
			for (int i = 0; i < arrayAdapter.getCount(); i++) {
				if (addString.equals(arrayAdapter.getItemId(i))) {
					return;
					// 重复了,则跳出
				}
			}
			// 如果添加字符串不为""
			if (!addString.equals("")) {
				// 添加到适配器中
				arrayAdapter.add(addString);
				// 获取刚刚添加进的字符串位置
				int post = arrayAdapter.getPosition(addString);
				// 设置刚刚添加进的下拉菜单内容被选中
				city_Spinner.setSelection(post);
				// 清空输入框
				input_city_EditText.setText("");
			}
			break;
		case R.id.Button_DEL:
			if (city_Spinner.getSelectedItem() != null) {
				// 删除Spinner的值
				arrayAdapter.remove(city_Spinner.getSelectedItem().toString());
				// 将myEditText 清空
				input_city_EditText.setText("");
				if (arrayAdapter.getCount() == 0) {
					// 将myTextView 清空
					Toast.makeText(this, "删完了", Toast.LENGTH_LONG).show();
					show_yourChoice_TextView.setText("");
				}
			}
			break;
		default:
			break;
		}
	}

	// 下拉菜单选项被选中事件处理
	@Override
	public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
			long arg3) {
		// TODO Auto-generated method stub
		show_yourChoice_TextView.setText(arrayAdapter.getItem(arg2));
	}

	// 未被选中 事件处理
	@Override
	public void onNothingSelected(AdapterView<?> arg0) {
		// TODO Auto-generated method stub

	}

	/*
	 * 添 加 Menu菜 单 进 行 退 出 操 作
	 */
	public boolean onCreateOptionsMenu1(Menu menu) {
		// TODO Auto-generated method stub
		menu.add("Exit");
		return super.onCreateOptionsMenu(menu);
	}

	/*
	 * Menu菜 单 退 出
	 */

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		finish();
		return super.onOptionsItemSelected(item);
	}

}

下面是代码下载


spinner.rar