动态添加/删除spinner菜单

抽空写了下动态添加/删除spinner菜单的demo,越学越发现现下掌握的都是些很基础的小知识呀,加油!

 其实就是维护adapter中的数据,这样spinner中就会相应而改变啦。

有几个注意点,代码中已经标识出来了。还有adapter和spinner中的部分函数要熟练应用就ok!

package com.esun.cxyz; 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; import android.widget.Toast; public class MainAct extends Activity { private TextView tv; private EditText et; private Button bt_add; private Button bt_del; private Spinner spinner; private ArrayAdapter<String> adapter; private List<String> allCountries; private static final String[] sountries = { "天津", "北京", "香港", "潍坊" }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); spinner.setAdapter(adapter); // 添加单击事件 bt_add.setOnClickListener(btAddListener); bt_del.setOnClickListener(btDelListener); spinner.setOnItemSelectedListener(spinnerListener); } // 添加按下 private Button.OnClickListener btAddListener = new Button.OnClickListener () { @Override public void onClick(View v) { String newCountry = et.getText().toString(); if (newCountry != null) { allCountries.add(newCountry); } else { Toast.makeText(MainAct.this, "请先输入城市名称", Toast.LENGTH_LONG).show(); } int pos = adapter.getPosition(newCountry); spinner.setSelection(pos); tv.setText(" "); et.setText(" "); } }; // 删除按下 private Button.OnClickListener btDelListener = new Button.OnClickListener () { @Override public void onClick(View v) { if (spinner.getSelectedItem() != null) { adapter.remove(spinner.getSelectedItem().toString()); et.setText(""); if (adapter.getCount() == 0) { et.setText(""); } } } }; // Spinner监听事件 private Spinner.OnItemSelectedListener spinnerListener = new Spinner.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { tv.setText(spinner.getSelectedItem().toString()); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }; // 初始化 public void init() { tv = (TextView)findViewById(R.id.tv); et = (EditText)findViewById(R.id.et); bt_add = (Button)findViewById(R.id.bt_add); bt_del = (Button)findViewById(R.id.bt_del); spinner = (Spinner)findViewById(R.id.spinner); allCountries = new ArrayList<String>(); // 这儿是需要注意的填充List for (int i = 0; i < sountries.length; i ++) { if (sountries[i].length() != 0) { allCountries.add(sountries[i]); } } // 这儿要给ArrayAdapter传List(allCountries),否则会出错 adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,allCountries); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); } }
运行效果:

                                                                                      



                                                                                                         


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值