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>