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

相关文章

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.