Android——列表選擇框(Spinner)

一般狀況下,若是列表選擇框中要顯示的列表項是可知的,那麼能夠將其保存在數組資源文件中,而後經過數組資源來爲列表選擇框指定列表項。這樣就能夠在不編寫Java代碼的狀況下實現一個下拉選擇框。java

1.在佈局文件中添加一個<spinner>標記,併爲其指定android:entries屬性,具體代碼以下:android

<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.編寫用於指定列表項的數組資源文件,並將其保存在res\values目錄中,這裏將其命名爲arrays.xml,在該文件中添加一個字符串數組,名稱爲ctype,具體代碼以下app

<?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()方法獲取列表選擇框的選中值,能夠使用下面的代碼:ide

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
				
			}
		});
		
	}

}

下面介紹經過指定適配器的方式指定列表的方式指定列表項的方法。this

(1)建立一個適配器對象,一般使用ArrayAdapter類。在Android中,建立適配器一般能夠使用如下兩種方法:一種是經過數組資源文件建立;另外一種是經過java裏面的字符串數組建立。spa

  • 經過數組資源文件建立適配器,須要使用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)將適配器與選擇列表框關聯:code

spinner.setAdapter(adapter);
相關文章
相關標籤/搜索