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的更多相关文章

  1. android下拉菜单spinner的使用方法

    Spinner控件也是一种列表类型的控件,它的继承关系如下:  java.lang.Object    ↳ android.view.View      ↳ android.view.ViewGrou ...

  2. 下拉菜单 Spinner 简单纯字符串版

    下拉菜单 Spinner 简单纯字符串版 public class MainActivity extends Activity implements AdapterView.OnItemSelecte ...

  3. Android 下拉菜单 Spinner 赋值

    private Spinner m_spiModel = null; //产品型号 m_spiModel = (Spinner) findViewById(R.id.spiModel);//产品型号 ...

  4. Android ActionBar中的下拉菜单

    在ActionBar中添加下拉菜单,主要有一下几个关键步骤: 1. 生成一个SpinnerAdapter,设置ActionBar的下拉菜单的菜单项 2. 实现ActionBar.OnNavigatio ...

  5. [deviceone开发]-多种样式下拉菜单demo

    一.简介 该demo主要展示了3种下拉菜单. 一.仿QQ弹出菜单 主要实现原理是通过add一个ui,然后通过点击事件控制其visible属性来显示或者隐藏. 二.组合下拉菜单 主要用到的控件是do_A ...

  6. android下拉菜单 spinner 学习

    首先看一下继承关系: public class Spinner extends AbsSpinner implements DialogInterface.OnClickListener Class ...

  7. 在Android中创建一个下拉菜单

    添加四个控件 TToolbar Alignment: alTop TSpeedButton Alignment: alRight StyleLookUp: detailstoolbutton Marg ...

  8. selenium webdriver从安装到使用(python语言),显示等待和隐性等待用法,切换窗口或者frame,弹框处理,下拉菜单处理,模拟鼠标键盘操作等

    selenium的用法 selenium2.0主要包含selenium IDE 和selenium webDriver,IDE有点类似QTP和LoadRunner的录制功能,就是firefox浏览器的 ...

  9. js面向对象封装级联下拉菜单列表

    本实例开发的级联下拉菜单是根据已有json数据创建的DOM元素.点击文本框后,显示一级菜单.如果菜单中包含子菜单,菜单右侧会有指示箭头.点击菜单之后,会再显示下一级菜单,以此类推.当菜单下无子菜单时, ...

随机推荐

  1. phpMemcache消息队列类

    <?php /** * Memcache 消息队列类 */ class QMC { const PREFIX = 'ASDFASDFFWQKE'; /** * 初始化 mc * @staticv ...

  2. Delphi Keycode

    Keycode表 字母和数字键的键码值(keyCode) 按键 键码 按键 键码 按键 键码 按键 键码 A 65 J 74 S 83 1 49 B 66 K 75 T 84 2 50 C 67 L ...

  3. PHP之路——VC库

    VC库:https://pan.baidu.com/s/1dF9LslV    密码:v7ap

  4. android 休眠唤醒机制分析(三) — suspend

    本文转自:http://blog.csdn.net/g_salamander/article/details/7988340 前面我们分析了休眠的第一个阶段即浅度休眠,现在我们继续看休眠的第二个阶段 ...

  5. lucene拼写检查模块

    Lucene是Apache发布的开源搜索引擎开发工具包,不仅提供了核心的搜索功能,还提供了许多其他功能插件,例如:拼写检查功能模块. 搜索拼写检查模块实现类在lucene-suggest-x.xx.x ...

  6. PartialFunction(偏函数)

    val one:PartialFunction[Int,String]={ case 1 => "one" case 2 => "two" case ...

  7. OSSEC

    [科普]入侵检测系统ossec配置文件详解 http://www.freebuf.com/articles/system/11862.html http://www.freebuf.com/autho ...

  8. CLOUDSTACK HA功能,测试成功

    要注意VM HA和HOST HA两个级别的区别.并且要整合.

  9. 玩死人不偿命的CLOUDSTACK

    玩过CLOUDSTACK(CS)的人,一定不会陌生下面的LOG: 2013-12-27 18:26:43,861 DEBUG [allocator.impl.FirstFitAllocator] (J ...

  10. BZOJ1174: [Balkan2007]Toponyms

    1174: [Balkan2007]Toponyms Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 117  Solved: 16[Submit][S ...