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元素.点击文本框后,显示一级菜单.如果菜单中包含子菜单,菜单右侧会有指示箭头.点击菜单之后,会再显示下一级菜单,以此类推.当菜单下无子菜单时, ...
随机推荐
- phpMemcache消息队列类
<?php /** * Memcache 消息队列类 */ class QMC { const PREFIX = 'ASDFASDFFWQKE'; /** * 初始化 mc * @staticv ...
- Delphi Keycode
Keycode表 字母和数字键的键码值(keyCode) 按键 键码 按键 键码 按键 键码 按键 键码 A 65 J 74 S 83 1 49 B 66 K 75 T 84 2 50 C 67 L ...
- PHP之路——VC库
VC库:https://pan.baidu.com/s/1dF9LslV 密码:v7ap
- android 休眠唤醒机制分析(三) — suspend
本文转自:http://blog.csdn.net/g_salamander/article/details/7988340 前面我们分析了休眠的第一个阶段即浅度休眠,现在我们继续看休眠的第二个阶段 ...
- lucene拼写检查模块
Lucene是Apache发布的开源搜索引擎开发工具包,不仅提供了核心的搜索功能,还提供了许多其他功能插件,例如:拼写检查功能模块. 搜索拼写检查模块实现类在lucene-suggest-x.xx.x ...
- PartialFunction(偏函数)
val one:PartialFunction[Int,String]={ case 1 => "one" case 2 => "two" case ...
- OSSEC
[科普]入侵检测系统ossec配置文件详解 http://www.freebuf.com/articles/system/11862.html http://www.freebuf.com/autho ...
- CLOUDSTACK HA功能,测试成功
要注意VM HA和HOST HA两个级别的区别.并且要整合.
- 玩死人不偿命的CLOUDSTACK
玩过CLOUDSTACK(CS)的人,一定不会陌生下面的LOG: 2013-12-27 18:26:43,861 DEBUG [allocator.impl.FirstFitAllocator] (J ...
- BZOJ1174: [Balkan2007]Toponyms
1174: [Balkan2007]Toponyms Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 117 Solved: 16[Submit][S ...