动态添加删除Spinner菜单项

2024-06-18 02:32

本文主要是介绍动态添加删除Spinner菜单项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Spinner是一种下接菜单,类似HTML中的select标签,点击后弹出一个对话框,显示几个供选择的选项,手机屏幕大小有限,如果都用RadioGroup单选按钮,会占用很大的空间。今天的例子最终效果如下图:

Spinner需要绑定一个适配器ArrayAdapter,将菜单项放在适配器中,添加删除菜单项只需要调用适配器的add,remove方法即可。
布局XML:

01 <?xml version="1.0" encoding="utf-8"?>
02 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03     android:orientation="vertical"
04     android:layout_width="fill_parent"
05     android:layout_height="fill_parent"
06     >
07 <EditText android:id="@+id/et"
08     android:layout_width="fill_parent"
09     android:layout_height="wrap_content"
10 />
11 <Button android:id="@+id/add"
12     android:layout_width="fill_parent"
13     android:layout_height="wrap_content"
14     android:text="添加"
15 />
16 <Button android:id="@+id/remove"
17     android:layout_width="fill_parent"
18     android:layout_height="wrap_content"
19     android:text="删除"
20 />
21 <Spinner android:id="@+id/sp"
22     android:layout_width="fill_parent"
23     android:layout_height="wrap_content"
24 />
25 </LinearLayout>

一个EditText,用于定义需要添加或删除的菜单项,一个添加,一个删除按钮,还有一个就是Spinner

在strings.xml中定义一个初始的数组,就是刚开始时Spinner显示的项目,当然,也可以直接在JAVA代码中定义

1 <string-array name="action">
2     <item>吃饭</item>
3     <item>睡觉</item>
4     <item>上网</item>
5 </string-array>

JAVA程序代码:
01 package com.pocketdigi.spanner;
02   
03 import java.util.ArrayList;
04   
05 import android.app.Activity;
06 import android.os.Bundle;
07 import android.view.View;
08 import android.view.View.OnClickListener;
09 import android.widget.ArrayAdapter;
10 import android.widget.Button;
11 import android.widget.EditText;
12 import android.widget.Spinner;
13   
14 public class main extends Activity {
15     /** Called when the activity is first created. */
16     EditText et;
17     Button add,remove;
18     Spinner sp;
19     ArrayList<String> list=new ArrayList<String>();
20     ArrayAdapter<String> adapter;
21     @Override
22     public void onCreate(Bundle savedInstanceState) {
23         super.onCreate(savedInstanceState);
24         setContentView(R.layout.main);
25         et=(EditText)findViewById(R.id.et);
26         add=(Button)findViewById(R.id.add);
27         remove=(Button)findViewById(R.id.remove);
28         sp=(Spinner)findViewById(R.id.sp);
29         //获取相应对象
30         String[]  ls=getResources().getStringArray(R.array.action);
31         //获取XML中定义的数组
32         for(int i=0;i<ls.length;i++){
33             list.add(ls[i]);
34         }
35         //把数组导入到ArrayList中
36         adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);
37         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
38         //设置下拉菜单的风格
39         sp.setAdapter(adapter);
40         //绑定适配器
41         sp.setPrompt("标题栏");
42         //设置对话框标题栏
43         add.setOnClickListener(new OnClickListener(){//添加按钮监听器
44   
45             @Override
46             public void onClick(View v) {
47                 // TODO Auto-generated method stub
48                 adapter.add(et.getText().toString());
49                 //添加输入的项 ,add后自动调用notifyDataSetChanged()
50                 //如果需要指定位置,使用insert(String s, int index)方法
51                 setTitle(String.valueOf(list.size()));
52                 //在标题输出添加后list的大小
53             }
54   
55         });
56         remove.setOnClickListener(new OnClickListener(){//删除按钮监听器
57   
58             @Override
59             public void onClick(View v) {
60                 // TODO Auto-generated method stub
61                 adapter.remove(sp.getSelectedItem().toString());
62                 //删除当前选中项,remove后自动调用notifyDataSetChanged()
63                 setTitle(String.valueOf(list.size()));
64             }
65   
66         });
67   
68     }
69 }

源代码打包下载:
Spinner范例 (498)

文章出处:http://www.pocketdigi.com/20100810/20.html

这篇关于动态添加删除Spinner菜单项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071054

相关文章

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

mybatisplus的逻辑删除过程

《mybatisplus的逻辑删除过程》:本文主要介绍mybatisplus的逻辑删除过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录myBATisplus的逻辑删除1、在配置文件中添加逻辑删除的字段2、在实体类上加上@TableLogic3、业务层正常删除即

MybatisPlus中removeById删除数据库未变解决方案

《MybatisPlus中removeById删除数据库未变解决方案》MyBatisPlus中,removeById需实体类标注@TableId注解以识别数据库主键,若字段名不一致,应通过value属... 目录MyBATisPlus中removeBypythonId删除数据库未变removeById(Se

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分