转:动态添加/删除spinner菜单--ArrlayList与Widget依赖性
package irdc.ex04_09;
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 java.util.ArrayList;
import java.util.List;
public class EX04_09 extends Activity
{
? 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;
? /** Called when the activity is first created. */
? @Override
? public void onCreate(Bundle savedInstanceState)
? {
??? super.onCreate(savedInstanceState);
??? /* 载入main.xml Layout */
??? 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_dropdown_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 arg0)
????? {
??????? String newCountry = myEditText.getText().toString();
??????? /* 比较值是否已经存在,不存在再添加?? */
??????? for (int i = 0; i < adapter.getCount(); i++)
??????? {
????????? if (newCountry.equals(adapter.getItem(i)))
????????? {
??????????? return;
????????? }
??????? }
??????? if (!newCountry.equals(""))
??????? {
????????? /* 重要的方:将值添加进adapters*/
????????? adapter.add(newCountry);
????????? /* 取得添加值的位子 */
????????? int position = adapter.getPosition(newCountry);
????????? /* 将spinner指定在添加的位子 */
????????? mySpinner.setSelection(position);
????????? /* 将myEditText清空? */
????????? myEditText.setText("");
??????? }
????? }
??? });
??? /* 将myButton_remove添加OnClickListener */
??? myButton_remove.setOnClickListener(new Button.OnClickListener()
??? {
????? @Override
????? public void onClick(View arg0)
????? {
??????? 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)
????? {
????? }
??? });
? }
}