动态添加删除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

相关文章

C#实现添加/替换/提取或删除Excel中的图片

《C#实现添加/替换/提取或删除Excel中的图片》在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观,下面我们来看看如何在C#中实现添加/替换/提取或删除E... 在Excandroidel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R