动态添加/删除Spinner列表选项框

在之前的UI组件大全中我们已经介绍过着Spinner了,这里的话我们实现动态地添加/删除Spinner

添加列表项的话用adapter.add(String)

删除列表项的话用adapter.remove(spinner.getSelectedItem().toString());

原理很简单,直接上代码吧:


核心代码流程:

①定义了list集合并将数组数据写入

②定义了适配器Arrayadapter,使用android.R.layout.simple_spinner_item布局格式,并把list数据写入

③添加按钮事件中使用语句:adapter.add(String);

④删除按钮事件中使用语句:adapter.remove(spinner.getSelectedItem().toString());

⑤添加spinner的触发事件:spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener()),实现两个抽象方法即可


布局文件:main.xml

[html]   view plain copy print ?
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:id="@+id/LinearLayout1"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     android:orientation="vertical"  
  7.     tools:context=".MainActivity" >  
  8.   
  9.     <TextView  
  10.         android:id="@+id/txtshow"  
  11.         android:layout_width="wrap_content"  
  12.         android:layout_height="wrap_content"  
  13.         android:text="" />  
  14.     <EditText  
  15.         android:id="@+id/bookEdittext"  
  16.         android:layout_width="match_parent"  
  17.         android:layout_height="wrap_content"   
  18.      />  
  19.     <Button  
  20.         android:id="@+id/btnadd"  
  21.         android:layout_width="match_parent"  
  22.         android:layout_height="wrap_content"  
  23.         android:text="添加书名"   
  24.     />  
  25.     <Button  
  26.         android:id="@+id/btndelete"  
  27.         android:layout_width="match_parent"  
  28.         android:layout_height="wrap_content"  
  29.         android:text="删除书名"   
  30.     />  
  31.     <Spinner   
  32.         android:id="@+id/spinner"  
  33.         android:layout_width="match_parent"  
  34.         android:layout_height="wrap_content"      
  35.     />  
  36. LinearLayout>  



MainActivity.java
[java]   view plain copy print ?
  1. public class MainActivity extends Activity {  
  2.   
  3.     //定义字符串数组资源:  
  4.     private static final String[] books =   
  5.     {  
  6.         "软件测试方法和技术","个体软件过程","多媒体技术基础",  
  7.         "软件项目管理案例教程","C++标准程序库"  
  8.     };  
  9.     //依次定义布局中的组件,TextView+两个EditText+添加与删除按钮,+Spinner  
  10.     //定义适配器ArrayAdapter,存储数据的List集合  
  11.     private TextView txtchoose;  
  12.     private EditText etxtadd;  
  13.     private Button btnadd;  
  14.     private Button btndelete;  
  15.     private Spinner spinner;  
  16.     private ArrayAdapter adapter;  
  17.     private List allBooks;  
  18.       
  19.     @Override  
  20.     protected void onCreate(Bundle savedInstanceState) {  
  21.         super.onCreate(savedInstanceState);  
  22.         setContentView(R.layout.activity_main);  
  23.           
  24.         //给List初始化,把数组中的值通过for循环添加到list中  
  25.         allBooks = new ArrayList();  
  26.         for(int i = 0;i < books.length;i++)  
  27.         {  
  28.             allBooks.add(books[i]);  
  29.         }  
  30.         //实例化适配器,里面的参数可以参照UI大全那部分  
  31.         adapter = new ArrayAdapter(getApplicationContext(),android.R.layout.simple_spinner_item,allBooks);  
  32.         //这个是设置选项卡的显示格式的  
  33.         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);  
  34.           
  35.         //为各个组件找到对象  
  36.         txtchoose = (TextView) findViewById(R.id.txtshow);  
  37.         etxtadd = (EditText) findViewById(R.id.bookEdittext);  
  38.         btnadd = (Button) findViewById(R.id.btnadd);  
  39.         btndelete = (Button) findViewById(R.id.btndelete);  
  40.         spinner = (Spinner) findViewById(R.id.spinner);  
  41.       
  42.         //将我们的adapter添加到Spinner中  
  43.         spinner.setAdapter(adapter);  
  44.           
  45.         //为添加按钮添加事件  
  46.         btnadd.setOnClickListener(new OnClickListener() {  
  47.               
  48.             @Override  
  49.             public void onClick(View v) {  
  50.                 String newbook = etxtadd.getText().toString();  
  51.                   
  52.                 //判断添加项是否已经存在  
  53.                 for(int i = 0;i < adapter.getCount();i++)  
  54.                 {  
  55.                     if(newbook.equals(adapter.getItem(i)))  
  56.                     return;  
  57.                 }  
  58.                 //判断添加想是否为空  
  59.                 if(!newbook.equals(""))  
  60.                 {  
  61.                     adapter.add(newbook);  
  62.                     int position = adapter.getPosition(newbook);  
  63.                     spinner.setSelection(position);  
  64.                     //清空用于输入的EditText  
  65.                     etxtadd.setText("");  
  66.                 }  
  67.             }  
  68.         });  
  69.                       
  70.         //为删除按钮添加删除事件  
  71.         btndelete.setOnClickListener(new OnClickListener() {  
  72.               
  73.             @Override  
  74.             public void onClick(View v) {  
  75.                 if(spinner.getSelectedItem() != null)  
  76.                 {  
  77.                     //删除spinner的值,根据选项的值来移除  
  78.                     adapter.remove(spinner.getSelectedItem().toString());  
  79.                     //将EditText清空  
  80.                     etxtadd.setText("");  
  81.                     if(adapter.getCount() == 0)  
  82.                     {  
  83.                         txtchoose.setText("");  
  84.                     }  
  85.                 }                 
  86.             }  
  87.         });  
  88.           
  89.         //为spinner设置事件OnItemSelectedListener,即点击选项框后的事件  
  90.         spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {  
  91.   
  92.   
  93.             @Override  
  94.             public void onItemSelected(AdapterView arg0, View arg1,  
  95.                     int arg2, long arg3) {  
  96.                 txtchoose.setText(arg0.getSelectedItem().toString());         
  97.             }  
  98.   
  99.             @Override  
  100.             public void onNothingSelected(AdapterView arg0) {                
  101.             }  
  102.         });  
  103.     }  
  104. }  


运行截图
动态添加/删除Spinner列表选项框_第1张图片 点击下拉式列表: 动态添加/删除Spinner列表选项框_第2张图片


点击添加按钮:

动态添加/删除Spinner列表选项框_第3张图片动态添加/删除Spinner列表选项框_第4张图片


点击删除按钮:

动态添加/删除Spinner列表选项框_第5张图片



是不是很简单呢,这里说下一个方法:

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

这个是把列表项设成这种类型的,如果没有这句的话就会变成如下的效果:

动态添加/删除Spinner列表选项框_第6张图片



大家可以按照自己的喜好,选择显示的格式!!(*^__^*) 嘻嘻……

你可能感兴趣的:(动态添加/删除Spinner列表选项框)