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

相关文章

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

如何恢复回收站中已删除/清空的文件

回收站清空后如何恢复已删除的文件?是否可以恢复永久删除的文件?或者最糟糕的是,如果文件直接被删除怎么办?本文将向您展示清空回收站后恢复已删除数据的最佳方法。 回收站清空后如何恢复已删除的文件? “回收站清空后我还能恢复已删除的文件吗?” 答案是肯定的,但是在这种情况下您将需要一个  回收站恢复工具 来从回收站中检索文件: 错误/永久删除回收站或任何数字存储设备中的文件 直接删除的文件/

LeetCode:64. 最大正方形 动态规划 时间复杂度O(nm)

64. 最大正方形 题目链接 题目描述 给定一个由 0 和 1 组成的二维矩阵,找出只包含 1 的最大正方形,并返回其面积。 示例1: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4 示例2: 输入: 0 1 1 0 01 1 1 1 11 1 1 1 11 1 1 1 1输出: 9 解题思路 这道题的思路是使用动态规划

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

Linux 删除 当前下的 mysql-8.0.31 空文件夹

在Linux中,如果你想要删除当前目录下的名为mysql-8.0.31的空文件夹(即该文件夹内没有任何文件或子文件夹),你可以使用rmdir命令。但是,如果mysql-8.0.31文件夹并非完全为空(即它包含文件或子文件夹),rmdir命令会失败。 如果你的目标是删除mysql-8.0.31文件夹及其内部的所有内容(无论是否为空),你应该使用rm命令结合-r(或-R,它们是等价的)选项来递归地删

Windows下php扩展开发c++动态库

PHP扩展开发,从零了解到初步完成一个小项目,经过三天的仔细研究,现整理如下 一、需求介绍 PHP扩展开发,调用自己之前的c++动态库,完成功能 二、项目之前 系统:windows xp  开发工具:vs 2008 web环境:apache2.4  PHP5.3.29-VC9-ts-x86 aphach和PHP 环境之前已经搭建完成 PHP源码:去官网http://www.php.n