• 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", "从没触发过");
                }
            });
        }
        
    }

    运行效果如图:

  • 相关阅读:
    <%!%>和<%%>的区别
    <jsp:param>传参乱码问题
    RedHat6.4 安装yum源
    J2EE中getParameter与getAttribute以及对应的EL表达式
    Ubuntu xrdp 遠端桌面連線 a
    Ubuntu SSH server 快速安裝和設定 a
    Ubuntu 12.04 快速安裝 Scrapy a
    Linux 壓縮與解壓縮指令備忘錄 a
    vim 設定快捷鍵為 [Ctrl] + [s] 存檔 a
    Linux 常用指令備忘錄 a
  • 原文地址:https://www.cnblogs.com/Claire6649/p/5952245.html
Copyright © 2020-2023  润新知