Android开发手记(10) 下拉菜单Spinner

时间:2021-08-15 04:27:48

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. &lbrack;deviceone开发&rsqb;-多种样式下拉菜单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. 在HTML网页中设置弹出窗口的办法

    [1.最基本的弹出窗口代码] 其实代码非常简单: <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.h ...

  2. EF6&plus;MYSQL之初体验

    初次使用EF6+MYSQL 这次的项目时间可拉得够长的,定制开发就是这样.客户真正用上了才能基本上不再改了.起先项目是php实现的,改造成桌面程序.用.net winform开发,像这种小项目肯定要用 ...

  3. 关于 ajax 动态返回数据 css 以及 js 失效问题

    ajax 毕竟是异步的 所以动态加载出来的数据 难免遇到 css 或者 js 失效的问题,所以要动态加载 css ji等文件了 1.公共方法 load //动态加载 js /css function ...

  4. android控件之EditText

    EditText继承关系:View-->TextView-->EditTextEditText的属性很多,这里介绍几个:android:hint="请输入数字!"//设 ...

  5. c&num;&colon;for循环;穷举,迭代 练习

    一)穷举 1. 第x种买法:羽毛球拍xx个,羽毛球xx个,水xx瓶 2. 单位给发了一张150元购物卡,拿着到超市买三类洗化用品.     洗发水15元,香皂2元,牙刷5元.求刚好花完150元,有多少 ...

  6. HDU 2073 无限的路

    Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还 ...

  7. 【ASP&period;NET Core】在CentOS上安装&period;NET Core运行时、部署到CentOS

    第一步:Add the dotnet product feed sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc ...

  8. day02作业

    1.判断下列逻辑语句的True,False. 1),1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 tru ...

  9. C&num;面向对象(封装)

    以上就是面向对象的封装和初始化:

  10. javascript 高级程序设计 一

    前言: 作为一个即将毕业.正在实习的大学生,我也默默的进入了开发者的行列.从一开始的c#编码狗到java程序员再到现在的JS开发者,我一直 希望自己可以在这个'万恶'的互联网时代走的更远.但是我还是一 ...