动态添加/删除Spinner列表选项框
2015-12-08 16:30
766 查看
在之前的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
plaincopyprint?
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<TextView
android:id="@+id/txtshow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
<EditText
android:id="@+id/bookEdittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/btnadd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="添加书名"
/>
<Button
android:id="@+id/btndelete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除书名"
/>
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
MainActivity.java
[java] view
plaincopyprint?
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
public class MainActivity extends Activity {
//定义字符串数组资源:
private static final String[] books =
{
"软件测试方法和技术","个体软件过程","多媒体技术基础",
"软件项目管理案例教程","C++标准程序库"
};
//依次定义布局中的组件,TextView+两个EditText+添加与删除按钮,+Spinner
//定义适配器ArrayAdapter,存储数据的List集合
private TextView txtchoose;
private EditText etxtadd;
private Button btnadd;
private Button btndelete;
private Spinner spinner;
private ArrayAdapter<String> adapter;
private List<String> allBooks;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//给List初始化,把数组中的值通过for循环添加到list中
allBooks = new ArrayList<String>();
for(int i = 0;i < books.length;i++)
{
allBooks.add(books[i]);
}
//实例化适配器,里面的参数可以参照UI大全那部分
adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_item,allBooks);
//这个是设置选项卡的显示格式的
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//为各个组件找到对象
txtchoose = (TextView) findViewById(R.id.txtshow);
etxtadd = (EditText) findViewById(R.id.bookEdittext);
btnadd = (Button) findViewById(R.id.btnadd);
btndelete = (Button) findViewById(R.id.btndelete);
spinner = (Spinner) findViewById(R.id.spinner);
//将我们的adapter添加到Spinner中
spinner.setAdapter(adapter);
//为添加按钮添加事件
btnadd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String newbook = etxtadd.getText().toString();
//判断添加项是否已经存在
for(int i = 0;i < adapter.getCount();i++)
{
if(newbook.equals(adapter.getItem(i)))
return;
}
//判断添加想是否为空
if(!newbook.equals(""))
{
adapter.add(newbook);
int position = adapter.getPosition(newbook);
spinner.setSelection(position);
//清空用于输入的EditText
etxtadd.setText("");
}
}
});
//为删除按钮添加删除事件
btndelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(spinner.getSelectedItem() != null)
{
//删除spinner的值,根据选项的值来移除
adapter.remove(spinner.getSelectedItem().toString());
//将EditText清空
etxtadd.setText("");
if(adapter.getCount() == 0)
{
txtchoose.setText("");
}
}
}
});
//为spinner设置事件OnItemSelectedListener,即点击选项框后的事件
spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
txtchoose.setText(arg0.getSelectedItem().toString());
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
}
运行截图
点击下拉式列表:
点击添加按钮:
点击删除按钮:
是不是很简单呢,这里说下一个方法:
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);这个是把列表项设成这种类型的,如果没有这句的话就会变成如下的效果:
大家可以按照自己的喜好,选择显示的格式!!(*^__^*) 嘻嘻……
相关文章推荐
- LLC算法coding与pooling解析
- 多线程相关的一些术语 (持续更新)
- 用到的东西
- iOS tableview距离顶部有一段空白
- Python split()函数默认参数
- iOS开发之懒加载
- struts2的工作原理
- JavaScript学习(5.5.6):跳转之try/catch/finally语句
- leetcode -- Merge Two Sorted Lists -- 重点
- CodeForces 590A Median Smoothing
- MongoDB学习(三):MongoDB Shell的使用
- BeanUtils.copyProperties&&PropertyUtils.copyProperties
- LeetCode 217 Contains Duplicate
- Linux su 与 su -
- Veloview阅读笔记1
- [置顶] iOS 7 跳过的一个坑又掉里了 - 图片渲染模式
- Java泛型-类型擦除
- 设计模式之组合模式
- JavaScript学习(5.5.5):跳转之throw语句
- android学习之路(八)---- Git版本控制