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

1、自定义Spinner

  首先,定义Spinner要显示的项目列表/res/values/arrays.xml

1 <?xml version="1.0" encoding="utf-8"?>
2 <resources>
3     <string-array name="citys">
4         <item>南京</item>
5         <item>徐州</item>
6         <item>常州</item>
7     </string-array>
8 </resources>

  然后,定义一个ArrayAdapter<String>并绑定到上面定义的项目列表。

1 ArrayAdapter<String> adapter = ArrayAdapter.createFromResource(
2                 this, R.array.citys, android.R.layout.simple_spinner_item);
3 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

  其中,createFromResource()的函数原型为:

createFromResource(Context context, int textArrayResId, int textViewResId);

  然后,将adapter绑定到spinner:

1  spinner.setAdapter(adapter);

  最后,为spinner添加一个setOnItemSelectedListener即可:

 1     spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
 2             @Override
 3             public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
 4                 Toast.makeText(MainActivity.this, "position" + i + spinner.getSelectedItem().toString(),
 5                             Toast.LENGTH_SHORT).show();
 6                 }
 7
 8             @Override
 9             public void onNothingSelected(AdapterView<?> adapterView) {
10                 Toast.makeText(MainActivity.this, "unselected", Toast.LENGTH_SHORT);
11             }
12         });

  完整代码为:

 1 public class MainActivity extends AppCompatActivity {
 2
 3     private Spinner spinner;
 4
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9
10         spinner = (Spinner) findViewById(R.id.spinner);
11
12         ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
13                 this, R.array.citys, android.R.layout.simple_spinner_item);
14         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
15         spinner.setAdapter(adapter);
16
17         spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
18             @Override
19             public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
20                 Toast.makeText(MainActivity.this, "position" + i + spinner.getSelectedItem().toString(),
21                             Toast.LENGTH_SHORT).show();
22                 }
23
24             @Override
25             public void onNothingSelected(AdapterView<?> adapterView) {
26                 Toast.makeText(MainActivity.this, "unselected", Toast.LENGTH_SHORT);
27             }
28         });
29
30     }
31
32 }

MainActivity.java

2、动态改变Spinner

  想动态改变Spinner的内容,需要将Spinner的内容绑定到一个Adapter上。通过增加ArrayAdapter的内容来动态改变Spinner的内容。

1         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item);
2         adapter.add("南京");
3         adapter.add("徐州");
4         adapter.add("常州");
5         spinner.setAdapter(adapter);

  (1)增加一个项

  通过在EditText输入需要增加的内容,之后单击一个Button来增加Spinner。为Button添加以下事件即可。

 1 btnAdd.setOnClickListener(new View.OnClickListener() {
 2             @Override
 3             public void onClick(View view) {
 4                 String city = editText.getText().toString();
 5                 for (int i = 0; i < adapter.getCount(); i++) {
 6                     if (city.equals(adapter.getItem(i))) {
 7                         Toast.makeText(MainActivity.this, "此城市已存在", Toast.LENGTH_SHORT).show();
 8                         return;
 9                     }
10                 }
11                 if (!city.trim().equals("")) {
12                     adapter.add(city);
13                     int pos = adapter.getPosition(city);
14                     spinner.setSelection(pos);
15                     editText.setText("");
16                 }
17             }
18         });

  (2)删除一个项

  通过在Spinner选中需要删除的内容,之后单击一个Button来删除Spinner。为Button添加以下事件即可。

 1 btnDel.setOnClickListener(new View.OnClickListener() {
 2             @Override
 3             public void onClick(View view) {
 4                 if (spinner.getSelectedItem() != null) {
 5                     adapter.remove(spinner.getSelectedItem().toString());
 6                     editText.setText("");
 7                     if (adapter.getCount() == 0) {
 8                         Toast.makeText(MainActivity.this, "列表为空", Toast.LENGTH_SHORT).show();
 9                     }
10                 }
11             }
12         });

3、完整代码如下:

 1 import android.support.v7.app.AppCompatActivity;
 2 import android.os.Bundle;
 3 import android.view.View;
 4 import android.widget.AdapterView;
 5 import android.widget.ArrayAdapter;
 6 import android.widget.Button;
 7 import android.widget.EditText;
 8 import android.widget.Spinner;
 9 import android.widget.Toast;
10
11 public class MainActivity extends AppCompatActivity {
12
13     private Spinner spinner;
14     private EditText editText;
15     private Button btnAdd;
16     private Button btnDel;
17     private ArrayAdapter<String> adapter;
18
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity_main);
23
24         btnAdd = (Button) findViewById(R.id.btnAdd);
25         btnDel = (Button) findViewById(R.id.btnDel);
26         editText = (EditText) findViewById(R.id.editText);
27         spinner = (Spinner) findViewById(R.id.spinner);
28
29         adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item);
30         adapter.add("南京");
31         adapter.add("徐州");
32         adapter.add("常州");
33         spinner.setAdapter(adapter);
34
35         btnAdd.setOnClickListener(new View.OnClickListener() {
36             @Override
37             public void onClick(View view) {
38                 String city = editText.getText().toString();
39                 for (int i = 0; i < adapter.getCount(); i++) {
40                     if (city.equals(adapter.getItem(i))) {
41                         Toast.makeText(MainActivity.this, "此城市已存在", Toast.LENGTH_SHORT).show();
42                         return;
43                     }
44                 }
45                 if (!city.trim().equals("")) {
46                     adapter.add(city);
47                     int pos = adapter.getPosition(city);
48                     spinner.setSelection(pos);
49                     editText.setText("");
50                 }
51             }
52         });
53         btnDel.setOnClickListener(new View.OnClickListener() {
54             @Override
55             public void onClick(View view) {
56                 if (spinner.getSelectedItem() != null) {
57                     adapter.remove(spinner.getSelectedItem().toString());
58                     editText.setText("");
59                     if (adapter.getCount() == 0) {
60                         Toast.makeText(MainActivity.this, "列表为空", Toast.LENGTH_SHORT).show();
61                     }
62                 }
63             }
64         });
65         spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
66             @Override
67             public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
68                 editText.setText(adapter.getItem(i));
69             }
70
71             @Override
72             public void onNothingSelected(AdapterView<?> adapterView) {
73
74             }
75         });
76
77     }
78
79 }

  

时间: 2024-08-02 06:59:31

Android开发手记(10) 下拉菜单Spinner的相关文章

android下拉菜单spinner的使用方法

Spinner控件也是一种列表类型的控件,它的继承关系如下: java.lang.Object    ? android.view.View      ? android.view.ViewGroup        ? android.widget.AdapterView<Textends android.widget.Adapter>          ? android.widget.AbsSpinner           ? android.widget.Spinner android

Android ActionBar中的下拉菜单

在ActionBar中添加下拉菜单,主要有一下几个关键步骤: 1. 生成一个SpinnerAdapter,设置ActionBar的下拉菜单的菜单项 2. 实现ActionBar.OnNavigationListener接口,当点击ActionBar的菜单项是进行相应的操作 3. 调用setNavigationMode()方法将ActionBar的操作模型设置为ActionBar.NAVIGATION_MODE_LIST. 注意:这个步骤应该在Activity的onCreate()回调函数时执行

安卓下拉菜单(Spinner)的实现

一.先送上效果图: 二.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" a

android 下拉菜单Spinner

activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent

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

public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener{ private Spinner spinner; private TextView text; private List<String> data = new ArrayList<String>(); private ArrayAdapter<String> adapter; private

Android开发仿微信下拉关闭图片11

图片会跟随手指移动,只有是下滑时才会退出查看页面,其他情况会复位,直接当做ImageView使用即可,setViewCall方法是在下滑完成后要执行的操作,上,左,右,可自行扩展 onTouchEvent 监听手指坐标,GestureDetector 监听滑动的惯性,ViewHelper设置图片位移动画 public class FriendCircleView extends android.support.v7.widget.AppCompatImageView implements Ges

【android开发】使用PopupWindow实现页面点击顶部弹出下拉菜单

没有太多花样,也没有很复杂的技术,就是简单的PopupWindow的使用,可以实现点击弹出一个自定义的view,view里可以随便设计,常用的可以放一个listview. demo中我只是一个点击展示,简单的使用了fade in out的动画效果,也没有精美的图片资源,看着也丑,不过这么短的时间,让你掌握一个很好用的技术,可以自己扩展,不很好么? 废话不说了,直接上代码: MainActivity.java [java] view plaincopy public class MainActiv

Android之——自定义下拉菜单的实现

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/48101651 做过Android开发的童鞋,一般都会遇到这样一种情况,就是Android中原有的下拉控件Spinner过于单调和简单,不能够满足我们实际开发的需求了,这时候就需要我们自己自定义下拉菜单来实现相应的功能,那么,如何实现自定义下拉菜单呢?下面我就来和大家一起实现这个功能. 一.原理 我们这个下拉菜单展示的内容主要以ListView实现,在界面上放置一个文本框,文本框右

Android popwindow和fragment结合 左侧弹出下拉菜单 切换界面

延续上一篇文章Android 实现对话框圆角功能 ,在项目推进的过程当中,之前是已经用popwindow实现了点击按钮,在按钮下方弹出下拉菜单,实现了类似微信右上角加好友的功能,有兴趣的朋友,可以下载这个资源.回归主题,之前popwindow的使用,是固定在了登陆刚进去的界面,假设现在点击了左侧菜单的其他按钮,这就要求标题下方的内容必须更新所要显示的内容,一开始想都没想,就用了如下代码进行跳转: Intent intent = new Intent(Intent.ACTION_EDIT, nul