最近由于工作原因在学习安卓开发,很多东西都是第一次接触。所以学着教程自己也敲了一遍!
动态添加╱删除的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);
}
}
下面是代码下载