• Android——列表选择框(Spinner)


    通常情况下,如果列表选择框中要显示的列表项是可知的,那么可以将其保存在数组资源文件中,然后通过数组资源来为列表选择框指定列表项。这样就可以在不编写Java代码的情况下实现一个下拉选择框。

    1.在布局文件中添加一个<spinner>标记,并为其指定android:entries属性,具体代码如下:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity" >
    	<Spinner android:entries="@array/ctype"
    	    	 android:layout_width="wrap_content"
    	    	 android:layout_height="wrap_content"
    	    	 android:id="@+id/spinner"/>
    </LinearLayout>
    

    其中android:entries属性是用来指定列表项的,如果在布局文件中不指定该属性,可以在Java代码中通过为其指定适配器的方式指定;

    2.编写用于指定列表项的数组资源文件,并将其保存在resvalues目录中,这里将其命名为arrays.xml,在该文件中添加一个字符串数组,名称为ctype,具体代码如下

    <?xml version="1.0" encoding="UTF-8"?>
    <resources>
        <string-array name="ctype">
            <item>ID</item>
            <item>Student Card</item>
            <item>Army Card</item>
            <item>Work Card</item>
            <item>Other</item>
        </string-array>
    </resources>
    

    在屏幕上添加列表选择框后,可以使用列表选择框的getSelectedItem()方法获取列表选择框的选中值,可以使用下面的代码:

    Spinner spinner=(Spinner)findViewById(R.id.spinner);
    spinner.getSelectedItem();

    如果想要在用户选择不同的列表项后,执行相应的处理,则可以为该列表选择框添加OnItemSelectedListener事件监听器。例如,为spinner添加选择列表事件监听器,并在onItemSelected()方法中获取选择项的值输出到日志中,可以使用如下代码:

    package com.basillee.blogdemo;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.util.Log;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemSelectedListener;
    import android.widget.Spinner;
    
    
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		Spinner spinner=(Spinner)findViewById(R.id.spinner);
    		spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    
    			@Override
    			public void onItemSelected(AdapterView<?> parent, View arg1,
    					int pos, long id) {
    				// TODO Auto-generated method stub
    				String result=parent.getItemAtPosition(pos).toString();//获取选择项的值
    				Log.i("spinner", result);
    			}
    
    			@Override
    			public void onNothingSelected(AdapterView<?> arg0) {
    				// TODO Auto-generated method stub
    				
    			}
    		});
    		
    	}
    
    }
    

    下面介绍通过指定适配器的方式指定列表的方式指定列表项的方法。

    (1)创建一个适配器对象,通常使用ArrayAdapter类。在Android中,创建适配器通常可以使用以下两种方法:一种是通过数组资源文件创建;另一种是通过java里面的字符串数组创建。

    • 通过数组资源文件创建适配器,需要使用ArrayAdapter类的createFromResource()方法,具体代码如下:
    ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(this,R.array.ctype,android.R.layout.simple_dropdown_item_1line);
    
    • 通过Java代码创建如下
    	String[]ctype=new String[]{"ID","Student Card","Army Card"};
         ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,ctype);
    

    (2)为适配器设置下拉列表的选项样式:

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    (3)将适配器与选择列表框关联:

    spinner.setAdapter(adapter);
  • 相关阅读:
    MySQL基础(一)
    创建SSM项目所需
    设计模式(三十)------23种设计模式(22):装饰器模式
    设计模式(三十一)------23种设计模式(23):简单工厂模式
    设计模式(三十二)------设计模式总结分类
    设计模式(二十八)------23种设计模式(20):外观模式
    设计模式(二十九)------23种设计模式(21):代理模式
    设计模式(二十七)------23种设计模式(19):组合模式
    算法与数据结构基础(四)高级排序算法2.快速排序
    设计模式(二十六)------23种设计模式(18):桥接模式
  • 原文地址:https://www.cnblogs.com/BasilLee/p/4101469.html
Copyright © 2020-2023  润新知