Android Spinner列表选择框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Spinner列表选择框相关的知识,希望对你有一定的参考价值。

Spinner

Spinner是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以直接设置数组源。

 

1、直接设置数组源

 在res/values/strings.xml中设置数组源

1 <string-array name="selector">
2         <item >学生证</item>
3         <item >结婚证</item>
4         <item >军官证</item>
5         <item >党员证</item>
6     </string-array>

然后在MainActivity找到spinner,然后设置默认选择项

 1 import android.app.Activity;
 2 import android.os.Bundle;
 3 import android.widget.Spinner;
 4 
 5 public class MainActivity extends Activity {
 6     /**
 7      * Spinner列表选择框
 8      * 是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以直接设置数组源
 9      */
10     @Override
11     protected void onCreate(Bundle savedInstanceState) {
12         super.onCreate(savedInstanceState);
13         setContentView(R.layout.activity_main);
14         
15         Spinner spinner = (Spinner) findViewById(R.id.spinner);
16         
17         spinner.setSelection(2, true);//从0开始
18     }
19 
20     
21 }

这里的setSelection(int position, boolean animate)和setSelection(int position) 实现机制有较大区别,当调用前者时重新layout,立即触发onItemSelected函数,作用相当于用手直接点击。而后者设置了下次选择位置:setNextSelectedPositionInt(position); 然后请求Layout;,而requestLayout并非立即执行,仅仅是一个schedule。但是后者可能在重新装载数据然后Layout时丢失了某些状态。

运行效果如图

技术分享

 

 

 

2、使用适配器,并设置监听

 

public class MainActivity extends Activity {
    /**
     * Spinner列表选择框
     * 是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以直接设置数组源
     */
    
    //数据源 
    String[] data = {"妈妈","爸爸","爷爷","奶奶","外公","外婆"};
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        Spinner spinner = (Spinner) findViewById(R.id.spinner);
        
        //直接使用数组源
        //spinner.setSelection(2,true);
        
        //使用适配器
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, data);
        spinner.setAdapter(adapter);
        
        //下拉列表选择框,设置监听
        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                //直接数组源
                //String name = getResources().getStringArray(R.array.selector)[position];
                //Toast.makeText(getBaseContext(), name, Toast.LENGTH_SHORT).show();
                
                //适配器的时候
                String name = data[position];
                //实质上如果是MainActivity.this也可以,但是如果改成this,会报错。因为这个用了匿名内部类
                Toast.makeText(getBaseContext(), name, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                //当没有任何选择时调用从没触发过
                Log.e("TAG", "从没触发过");
            }
        });
    }
    
}

 

运行效果如图:

 

技术分享

 

以上是关于Android Spinner列表选择框的主要内容,如果未能解决你的问题,请参考以下文章

Android零基础入门第46节:下拉框Spinner

android studio 的下拉菜单Spinner使用详解

安卓组件------列表选择框

Android Studio App开发中高级控件下拉列表Spinner的讲解及实战(附源码 超详细必看)

下拉列表框Spinner的使用

《Android Studio开发实战》学习- 下拉框