Android开发手记(10) 下拉菜单Spinner
1、自定义Spinner
首先,定义Spinner要显示的项目列表/res/values/arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="citys">
<item>南京</item>
<item>徐州</item>
<item>常州</item>
</string-array>
</resources>
然后,定义一个ArrayAdapter<String>并绑定到上面定义的项目列表。
ArrayAdapter<String> adapter = ArrayAdapter.createFromResource(
this, R.array.citys, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
其中,createFromResource()的函数原型为:
createFromResource(Context context, int textArrayResId, int textViewResId);
然后,将adapter绑定到spinner:
spinner.setAdapter(adapter);
最后,为spinner添加一个setOnItemSelectedListener即可:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(MainActivity.this, "position" + i + spinner.getSelectedItem().toString(),
Toast.LENGTH_SHORT).show();
} @Override
public void onNothingSelected(AdapterView<?> adapterView) {
Toast.makeText(MainActivity.this, "unselected", Toast.LENGTH_SHORT);
}
});
完整代码为:
public class MainActivity extends AppCompatActivity { private Spinner spinner; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.citys, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(MainActivity.this, "position" + i + spinner.getSelectedItem().toString(),
Toast.LENGTH_SHORT).show();
} @Override
public void onNothingSelected(AdapterView<?> adapterView) {
Toast.makeText(MainActivity.this, "unselected", Toast.LENGTH_SHORT);
}
}); } }
MainActivity.java
2、动态改变Spinner
想动态改变Spinner的内容,需要将Spinner的内容绑定到一个Adapter上。通过增加ArrayAdapter的内容来动态改变Spinner的内容。
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item);
adapter.add("南京");
adapter.add("徐州");
adapter.add("常州");
spinner.setAdapter(adapter);
(1)增加一个项
通过在EditText输入需要增加的内容,之后单击一个Button来增加Spinner。为Button添加以下事件即可。
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String city = editText.getText().toString();
for (int i = 0; i < adapter.getCount(); i++) {
if (city.equals(adapter.getItem(i))) {
Toast.makeText(MainActivity.this, "此城市已存在", Toast.LENGTH_SHORT).show();
return;
}
}
if (!city.trim().equals("")) {
adapter.add(city);
int pos = adapter.getPosition(city);
spinner.setSelection(pos);
editText.setText("");
}
}
});
(2)删除一个项
通过在Spinner选中需要删除的内容,之后单击一个Button来删除Spinner。为Button添加以下事件即可。
btnDel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (spinner.getSelectedItem() != null) {
adapter.remove(spinner.getSelectedItem().toString());
editText.setText("");
if (adapter.getCount() == 0) {
Toast.makeText(MainActivity.this, "列表为空", Toast.LENGTH_SHORT).show();
}
}
}
});
3、完整代码如下:
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.Toast; public class MainActivity extends AppCompatActivity { private Spinner spinner;
private EditText editText;
private Button btnAdd;
private Button btnDel;
private ArrayAdapter<String> adapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); btnAdd = (Button) findViewById(R.id.btnAdd);
btnDel = (Button) findViewById(R.id.btnDel);
editText = (EditText) findViewById(R.id.editText);
spinner = (Spinner) findViewById(R.id.spinner); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item);
adapter.add("南京");
adapter.add("徐州");
adapter.add("常州");
spinner.setAdapter(adapter); btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String city = editText.getText().toString();
for (int i = 0; i < adapter.getCount(); i++) {
if (city.equals(adapter.getItem(i))) {
Toast.makeText(MainActivity.this, "此城市已存在", Toast.LENGTH_SHORT).show();
return;
}
}
if (!city.trim().equals("")) {
adapter.add(city);
int pos = adapter.getPosition(city);
spinner.setSelection(pos);
editText.setText("");
}
}
});
btnDel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (spinner.getSelectedItem() != null) {
adapter.remove(spinner.getSelectedItem().toString());
editText.setText("");
if (adapter.getCount() == 0) {
Toast.makeText(MainActivity.this, "列表为空", Toast.LENGTH_SHORT).show();
}
}
}
});
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
editText.setText(adapter.getItem(i));
} @Override
public void onNothingSelected(AdapterView<?> adapterView) { }
}); } }
Android开发手记(10) 下拉菜单Spinner的更多相关文章
- android下拉菜单spinner的使用方法
Spinner控件也是一种列表类型的控件,它的继承关系如下: java.lang.Object ↳ android.view.View ↳ android.view.ViewGrou ...
- 下拉菜单 Spinner 简单纯字符串版
下拉菜单 Spinner 简单纯字符串版 public class MainActivity extends Activity implements AdapterView.OnItemSelecte ...
- Android 下拉菜单 Spinner 赋值
private Spinner m_spiModel = null; //产品型号 m_spiModel = (Spinner) findViewById(R.id.spiModel);//产品型号 ...
- Android ActionBar中的下拉菜单
在ActionBar中添加下拉菜单,主要有一下几个关键步骤: 1. 生成一个SpinnerAdapter,设置ActionBar的下拉菜单的菜单项 2. 实现ActionBar.OnNavigatio ...
- [deviceone开发]-多种样式下拉菜单demo
一.简介 该demo主要展示了3种下拉菜单. 一.仿QQ弹出菜单 主要实现原理是通过add一个ui,然后通过点击事件控制其visible属性来显示或者隐藏. 二.组合下拉菜单 主要用到的控件是do_A ...
- android下拉菜单 spinner 学习
首先看一下继承关系: public class Spinner extends AbsSpinner implements DialogInterface.OnClickListener Class ...
- 在Android中创建一个下拉菜单
添加四个控件 TToolbar Alignment: alTop TSpeedButton Alignment: alRight StyleLookUp: detailstoolbutton Marg ...
- selenium webdriver从安装到使用(python语言),显示等待和隐性等待用法,切换窗口或者frame,弹框处理,下拉菜单处理,模拟鼠标键盘操作等
selenium的用法 selenium2.0主要包含selenium IDE 和selenium webDriver,IDE有点类似QTP和LoadRunner的录制功能,就是firefox浏览器的 ...
- js面向对象封装级联下拉菜单列表
本实例开发的级联下拉菜单是根据已有json数据创建的DOM元素.点击文本框后,显示一级菜单.如果菜单中包含子菜单,菜单右侧会有指示箭头.点击菜单之后,会再显示下一级菜单,以此类推.当菜单下无子菜单时, ...
随机推荐
- Python学习笔记六--文件和输入输出
6.1文件对象 所有Python对文件的操作都是基于对文件对象的操作.那么就从文件对象的创建说起.open()[file()]提供初始化输入输出的接口.open()成功打开文件时会返回一个文件对象. ...
- 怎样导入SDWebImage
Two ways : 方法1:copy all the files into your project. --下载https://github.com/rs/SDWebImage. --把SD项目co ...
- java的占位符
java占位符的类型: 常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处.fo ...
- N个元素的集合划分成互斥的两个子集的数目
前面这是寒假听马士兵老师讲的时候积累的语录.......... 1.php是水果刀,java是菜刀,刀法比较多,一年的和三年的区别很大. 2.nanicat连接mysql出现10061是服务没开启,却 ...
- treap修订
#include<cstdio> #include<cmath> #include<algorithm> #include<ctime> #includ ...
- at命令
在windows系统中,windows提供了计划任务这一功能,在控制面板 -> 性能与维护 -> 任务计划, 它的功能就是安排自动运行的任务. 通过'添加任务计划'的一步步引导,则可建立一 ...
- MapReduce Shuffle And Sort
引言 MapReduce作出保证:进入每个Reducer的数据行都是有序的(根据数据行的键值进行排序).MapReduce将Mapper的输出进行排序并传递给Reducer作为输入的过程称为Shu ...
- mklink命令转移win7系统盘文件夹users和programdata(附xp的方法)
mklink命令转移win7系统盘文件夹users和programdata(附xp的方法) 使用mklink命令转移文件夹清理臃肿的c盘 (一) 我的 ...
- Merge Sorted Array——LeetCode
Given two sorted integer arrays A and B, merge B into A as one sorted array. Note:You may assume tha ...
- Spring JDBC 随笔
Spring 框架,借助 JdbcTemplate 类来简化 java 访问 database. 完成一个增查改删(CRUD)的基本功能,借助下面 5 个角色来共同来完成. 1. object cla ...