2013年3月21日----动态添加_删除的Spinner菜单

动态添加/删除的Spinner菜单

在Android的Spinner里的元素,如果想动态的增减下拉菜单的选项,就必须利用ArrayList的依赖性来完成。

下面的应用程序设计一个EditText供用户输入文字,单击添加按钮会将文字添加进Spinner;单击“删除”按钮则删除所选择的Spinner选项,常应用于未知Spinner选项数量的To-Do List或添加维护市县数据等。下面是示例的源码:

package com.example.test01;

 

import java.util.ArrayList;

import java.util.List;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

importandroid.view.MotionEvent;

import android.view.View;

import android.view.View.OnClickListener;

importandroid.view.View.OnFocusChangeListener;

importandroid.view.View.OnTouchListener;

importandroid.view.animation.Animation;

importandroid.view.animation.AnimationUtils;

importandroid.widget.AdapterView.OnItemSelectedListener;

importandroid.widget.AdapterView;

importandroid.widget.ArrayAdapter;

importandroid.widget.Button;

importandroid.widget.EditText;

importandroid.widget.Spinner;

importandroid.widget.TextView;

 

public class MainActivityextends Activity {

 

       TextView textView01;

       EditText editText01;

       Button buttonAdd , buttonDelete;

       Spinner spinner01;

       private static final String[] countriesStr = 

              {"北京市" , "上海市" , "天津市" , "重庆市"};

       private ArrayAdapter<String> adapter;

       private ArrayList<String> allCountries;

       Animation animation;

       

       @Override

       protected void onCreate(Bundle savedInstanceState) {

              super.onCreate(savedInstanceState);

              setContentView(R.layout.activity_main);

 

              allCountries = new ArrayList<String>();

              for (int i = 0; i < countriesStr.length; i++) {

                     allCountries.add(countriesStr[i]);

              }

              

              //new ArrayAdapter对象并将allCountries传入

              adapter = newArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_item , allCountries);

              adapter.setDropDownViewResource(R.layout.myspinner_dropdown);

              

              //以findViewById取得对象

              textView01 = (TextView)findViewById(R.id.textView01);

              editText01 = (EditText)findViewById(R.id.editText);

              buttonAdd = (Button)findViewById(R.id.buttonAdd);

              buttonDelete = (Button)findViewById(R.id.buttonDelete);

              spinner01 = (Spinner)findViewById(R.id.spinner);

              

              //将ArrayAdapter添加Spinner对象中

              spinner01.setAdapter(adapter);

              //将buttonAdd添加OnClickListener

              buttonAdd.setOnClickListener(new OnClickListener() {

                     public voidonClick(View v) {

                            String newCountry =editText01.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);

                                   //将Spinner选择在添加的值的位置

                                   spinner01.setSelection(position);

                                   //将EditText清空

                                   editText01.setText("");

                            }

                     }

              });

              

              buttonDelete.setOnClickListener(new OnClickListener() {

                     public void onClick(View v) {

                            if (spinner01.getSelectedItem() != null){

                                   //删除spinner的值

                                   adapter.remove(spinner01.getSelectedItem().toString());

                                   //将EditText清空

                                   editText01.setText("");

                                   if (adapter.getCount() == 0) {

                                          //将TextView清空

                                          textView01.setText("");

                                   }

                            }

                     }

              });

              

              //将spinner添加OnItemSelectedListener

              spinner01.setOnItemSelectedListener(newSpinnerSelectListener());

              

       }

       

       class SpinnerSelectListener implements OnItemSelectedListener

       {

              public void onItemSelected(AdapterView<?> arg0,View arg1, int arg2,

                            long arg3) {

                     //将所选spinner的值带入TextView中

                     textView01.setText(arg0.getSelectedItem().toString());

                     

              }

 

              public void onNothingSelected(AdapterView<?>arg0) {}

       }

       

       

       @Override

       public boolean onCreateOptionsMenu(Menu menu) {

              // Inflate the menu; this adds items to the action barif it is present.

              getMenuInflater().inflate(R.menu.main, menu);

              return true;

       }

}

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值