抽空写了下动态添加/删除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);
}
}
运行效果:
