/res/values/strings.xml代码如下:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Spinner下拉菜单</string> <string name="spinner_title">请选择城市</string> <string-array name="citys"> <item>北京</item> <item>上海</item> <item>湖南</item> <item>广州</item> <item>深圳</item> </string-array> </resources>
/res/layout/main.xml代码如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#ffffffff"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="城市:" android:textSize="15dp" android:textColor="#ff000000" android:layout_margin="5dp"/> <Spinner android:id="@+id/citySpinner" android:layout_width="fill_parent" android:layout_height="wrap_content" android:prompt="@string/spinner_title"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="动态添加/删除下拉菜单" android:textSize="18dp" android:textColor="#ff000000" android:layout_marginTop="20dp"/> <Spinner android:id="@+id/updateSpinner" android:layout_width="fill_parent" android:layout_height="wrap_content" android:prompt="@string/spinner_title"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="新增城市名称:" android:textSize="15dp" android:textColor="#ff000000" android:layout_marginTop="5dp"/> <EditText android:id="@+id/newCityEdit" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/btn_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="添加" android:layout_gravity="center_horizontal"/> <Button android:id="@+id/btn_del" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="删除" android:layout_gravity="center_horizontal"/> </LinearLayout> </LinearLayout>
Java代码如下:
package com.demo.android.spinner; 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.Toast; public class SpinnerActivity extends Activity { private Spinner citySpinner; private Spinner updateSpinner; private EditText newCityEdit; private Button addButton; private Button delButton; private List<String> allCitys; private ArrayAdapter<String> cityAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); processLoad(); processUpdateSpinner(); } private void processUpdateSpinner() { updateSpinner=(Spinner) findViewById(R.id.updateSpinner); newCityEdit=(EditText) findViewById(R.id.newCityEdit); addButton=(Button) findViewById(R.id.btn_add); delButton=(Button) findViewById(R.id.btn_del); allCitys=new ArrayList<String>(); allCitys.add("北京"); allCitys.add("上海"); allCitys.add("广州"); cityAdapter=new ArrayAdapter<String>(SpinnerActivity.this, android.R.layout.simple_spinner_item,allCitys); //设置下拉菜单项的布局 cityAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); updateSpinner.setAdapter(cityAdapter); //新增按钮单击事件 addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //获取输入城市的文本框输入值 String newCityTxt=newCityEdit.getText().toString().trim(); if("".equals(newCityTxt)){ Toast.makeText(SpinnerActivity.this, "城市名称不能为空", Toast.LENGTH_SHORT).show(); return; } //判断输入项和当前选中项是否相同 for(int i=0;i<cityAdapter.getCount();i++){ if(newCityTxt.equals(cityAdapter.getItem(i))){ Toast.makeText(SpinnerActivity.this, "该项已经存在", Toast.LENGTH_SHORT).show(); return; } } cityAdapter.add(newCityTxt); int position=cityAdapter.getPosition(newCityTxt); updateSpinner.setSelection(position); newCityEdit.setText(""); } }); delButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(updateSpinner.getSelectedItem()!=null){ //从Adapter中删除选中的项 cityAdapter.remove(updateSpinner.getSelectedItem().toString()); newCityEdit.setText(""); if(cityAdapter.getCount()==0){ //如果Adapter没有项则提示用户 Toast.makeText(SpinnerActivity.this, "没有项可以移除", Toast.LENGTH_SHORT).show(); } } } }); } private void processLoad() { citySpinner=(Spinner) findViewById(R.id.citySpinner); //为下拉列表定义适配器 ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(this, R.array.citys,android.R.layout.simple_spinner_item); //当Spinner按下时在下拉列表里显示的数据视图 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //为Spinner添加适配器 citySpinner.setAdapter(adapter); //为Spinner添加时间监听 citySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view,int position, long id) { //将当前单机项的坐标和id显示出来 Toast.makeText(SpinnerActivity.this, "position:"+position+",id:"+id+",value:"+citySpinner.getSelectedItem().toString(), Toast.LENGTH_LONG).show(); } @Override public void onNothingSelected(AdapterView<?> arg0) { Toast.makeText(SpinnerActivity.this, "unselected", Toast.LENGTH_SHORT).show(); } }); } }
效果图如下: