动态添加删除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实现范围分区表(新增、删除、重组、查看)

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

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

如何在Mac上彻底删除Edge账户? 手动卸载Edge浏览器并清理残留文件技巧

《如何在Mac上彻底删除Edge账户?手动卸载Edge浏览器并清理残留文件技巧》Mac上的Edge账户里存了不少网站密码和个人信息,结果同事一不小心打开了,简直尴尬到爆炸,想要卸载edge浏览器并清... 如果你遇到 Microsoft Edge 浏览器运行迟缓、频繁崩溃或网页加载异常等问题,可以尝试多种方

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET