Android_(控件)动态添加或删除Spinner下拉菜单
使用ArrayList动态数组的依赖性实现动态增减Spinner下拉菜单选项功能。
设置一个EditText输入框,当用户输入了文字并单击【添加】按钮的同时,就会将输入的值添加Spinner至下拉菜单的最后一项,接着Spinner会停留在刚刚添加的选项上,单击【删除】按钮则会删除选择的Spinner选项。
运行截图:



程序结构

package com.example.asus.gary_0400; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView; import java.util.ArrayList;
import java.util.List; public class MainActivity extends AppCompatActivity { private static final String[] countriesStr = {"周一","周二","周三","周四","周五"};
private TextView myTextView;
private EditText myEditText;
private Button myButton_add;
private Button myButton_remove;
private Spinner mySpinner;
private ArrayAdapter<String>adapter;
private List<String> allCountries; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
allCountries = new ArrayList<String>(); for(int i=0;i<countriesStr.length;i++)
{
allCountries.add(countriesStr[i]);
} //新建ArrayAdapter对象并将allCountries传入
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_dropdown_item,allCountries); adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item); //以findViewById()取的对象
myTextView = (TextView)findViewById(R.id.myTextView);
myEditText = (EditText)findViewById(R.id.myEditText);
myButton_add=(Button)findViewById(R.id.myButton_add);
myButton_remove = (Button)findViewById(R.id.myButton_remove);
mySpinner = (Spinner)findViewById(R.id.myspinner); //将ArrayAdapter添加到Spinner对象中
mySpinner.setAdapter(adapter); myButton_add.setOnClickListener(new Button.OnClickListener() { @Override
public void onClick(View v) {
String newCountry = myEditText.getText().toString();
//先比较添加的值是否存在,不存在才可以添加
for(int i=0;i<adapter.getCount();i++)
{
if(newCountry.equals(adapter.getItem(i))){
return;
}
} if(!newCountry.equals(""))
{
//将值添加至adapter
adapter.add(newCountry);
//取得添加的值的位置
int position = adapter.getPosition(newCountry);
//将Spinner选择在添加的值的位置
mySpinner.setSelection(position);
//将myEditText清空
myEditText.setText("");
}
}
}); //为myButton_remove添加OnclickListener
myButton_remove.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if(mySpinner.getSelectedItem()!=null)
{
//删除mySpinner的值
adapter.remove(mySpinner.getSelectedItem().toString());
//将myEditText清空
myEditText.setText("");
if(adapter.getCount()==0)
{
//将myTextView清空
myTextView.setText("");
}
}
}
}); //为mySpinner添加OnItemSelextedListener
mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//将所选mySpinner的值带入myTextView中
myTextView.setText(parent.getSelectedItem().toString());
} @Override
public void onNothingSelected(AdapterView<?> parent) { }
});
}
}
MainActivity
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.asus.gary_0400.MainActivity"
android:weightSum="1"> <TextView
android:id="@+id/myTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Gary_动态添加或删除菜单"
android:textSize="40px" /> <EditText
android:id="@+id/myEditText"
android:layout_width="match_parent"
android:layout_height="50dp"
android:ems="10"
android:hint="填写添加项"
android:inputType="textPersonName" /> <Button
android:id="@+id/myButton_add"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="添加" /> <Button
android:id="@+id/myButton_remove"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除" /> <Spinner
android:id="@+id/myspinner"
android:layout_width="match_parent"
android:layout_height="50px"
android:layout_weight="0.13" /> </LinearLayout>
activity_main.xml
一、界面布局
一个TextView显示框用来显示添加所选项的字符串, EditText作为输入框,两个Button按钮作为”添加“和“删除”对Spinner菜单进行操作
二、实现程序功能
1、创建ArrayAdapter对象并将当前Spinner菜单中数据个数多少的值传入
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_dropdown_item,allCountries); adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
2、将ArrayAdapter添加到Spinner对象中
// mySpinner = (Spinner)findViewById(R.id.myspinner);
//mySpinner取得Spinner控件对象
mySpinner.setAdapter(adapter);
3、实现"添加"按钮功能
myButton_add.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
String newCountry = myEditText.getText().toString();
//先比较添加的值是否存在,不存在才可以添加
for(int i=0;i<adapter.getCount();i++)
{
if(newCountry.equals(adapter.getItem(i))){
return;
}
}
if(!newCountry.equals(""))
{
//将值添加至adapter
adapter.add(newCountry);
//取得添加的值的位置
int position = adapter.getPosition(newCountry);
//将Spinner选择在添加的值的位置
mySpinner.setSelection(position);
//将myEditText清空
myEditText.setText("");
}
}
});
4、实现"删除"按钮功能
myButton_remove.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if(mySpinner.getSelectedItem()!=null)
{
//删除mySpinner的值
adapter.remove(mySpinner.getSelectedItem().toString());
//将myEditText清空
myEditText.setText("");
if(adapter.getCount()==0)
{
//将myTextView清空
myTextView.setText("");
}
}
}
});
5、实现TextView控件功能(显示添加进入Spinner中的字符串)
mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//将所选mySpinner的值带入myTextView中
myTextView.setText(parent.getSelectedItem().toString());
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
Android_(控件)动态添加或删除Spinner下拉菜单的更多相关文章
- C# DataGridView控件动态添加新行
C# DataGridView控件动态添加新行 DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如 ...
- C# DataGridView控件 动态添加新行
DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如需要动态为DataGridView控件添加新行, ...
- DotNetBar RibbonControl 控件动态添加项
想做个插件式开发,界面用Dotnetbar的RibbonControl,需要通过代码动态的向RibbonControl控件添加项 示例代码如下: RibbonTabItem rti = new Rib ...
- 为控件动态添加Style
此文可解决: 重写控件时,给控件加入子控件或父控件的样式切换问题. 很灵活的可以根据不同内容显示不同样式 子控件作用在: <DataTemplate x:Key="ColmunHea ...
- duilib 修复CTreeViewUI控件动态添加子控件时,对是否显示判断不足的bug
转载请说明出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/42264947 这个bug我在仿酷狗开发日志里提到过,不过后来发现修复的不够 ...
- 自定义SWT控件二之自定义多选下拉框
2.自定义下拉多选框 package com.view.control.select; import java.util.ArrayList; import java.util.HashMap; im ...
- 下拉刷新控件(3)系统自带的下拉刷新控件SwipeRefreshLayout(推荐*)
1,简介 The SwipeRefreshLayout should be used whenever the user can refresh the contents of a view via ...
- Android 使用动画效果后的控件位置处理 类似系统通知栏下拉动画
Android的动画的使用,请参考.Android的动画,在设计方面,我有点不太理解,觉得这样搞很怪,因为在控件动画后,即使设置了停留在动画结束时的位置,我们也确实看到了控件停在那个位置,但其实该控件 ...
- js给div动态添加控件,然后给这个控件动态添加事件
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...
随机推荐
- Java 条件语句 if else
一个 if 语句包含一个布尔表达式和一条或多条语句. 语法 if 语句的语法如下: if(布尔表达式) { //如果布尔表达式为true将执行的语句 } 如果布尔表达式的值为 true,则执行 if ...
- WINDOWS7 系统中建立文件夹映射
如何在WIN7中建立文件夹映射,还有以及MKLINK的具体使用方法: 步骤如下: 1.以映射d盘1文件夹为例: 2.按win+r,输入cmd,点击确定: 3.提示符后输入mklink /J " ...
- 图灵机器人API调用 C++版
这是一个非常简单的例子,作为新手的我是拿来练手的,当然也可以给和我一样的朋友一些参考. 而且图灵官网没有给出C的例子,网上一搜也是各种Java.C#甚至易语言实现,不要歧视C++好不好●︿●,就算不如 ...
- python网络编程-Json序列化功能扩展-软件开发架构-OSI七层协议-TCP-01
面向对象补充知识点(面向对象的应用) 扩展json序列化所支持的数据类型(分析源码) import json from datetime import datetime, date # ------- ...
- Java APi 之 RMI远程方法调用
一.什么是RPC RPC全称是remote procedure call,即远程过程调用.它是一种协议,用于从远程计算机上请求服务. 例如有两台服务器A和B,A上的应用想要调用B上应用的方法,但是他们 ...
- 关于rpm包的安装卸载等
在Linux操作系统中,有一个系统软件包,它的功能类似于Windows里面的“添加/删除程序”,但是功能又比“添加/删除程序”强很多,它就是Red Hat Package Manager(简称RPM) ...
- dubbo学习笔记四(异步调用)
相关资料 官方文档 项目结构 代码示例 [EchoTestApp] @RestController @SpringBootApplication @ImportResource("class ...
- Linux查看修改文件句柄数
SuSE 11SP3 默认句柄数是1024 1.查看linux的文件句柄数 ulimit -a 2.修改文件句柄数 ①ulimit -n 65535②修改linux系统参数.vi /etc/secur ...
- 关于windows下无法删除文件,需要TrueInstaller权限的问题
笔者办公室的笔记本今天突然弹出来一个ie浏览器,这不是为了下载其他浏览器而存在的浏览器吗?现在还臭不要脸的弹出来,然鹅我在删除文件夹的时候,提示我无法删除,必须要有TrueInstaller的权限,那 ...
- Linux inode 详解
操作系统的文件数据除了实际内容之外,通常含有非常多的属性,例如Linux操作系统的文件权限与文件属性.文件系统通常会将这两部分内容分别存放在inode和block中. inode 和 block 概述 ...