转自:http://blog.csdn.net/gjanyanlig/article/details/6928975
一. 简单认识
Activity
- package cn.lyj.android;
- import android.app.Activity;
- import android.content.Context;
- import android.content.SharedPreferences;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemSelectedListener;
- import android.widget.ArrayAdapter;
- import android.widget.Spinner;
- import android.widget.TextView;
- import android.widget.Toast;
- public class AndroidUIActivity extends Activity {
- protected int mPos;
- protected String mSelection;
- protected ArrayAdapter<CharSequence> mAdapter;
- public static final int DEFAULT_POSITION = 2;
- public static final String PREFERENCES_FILE = "SpinnerPrefs";
- public static final String PROPERTY_DELIMITER = "=";
- public static final String POSITION_KEY = "Position";
- public static final String SELECTION_KEY = "Selection";
- public static final String POSITION_MARKER = POSITION_KEY
- + PROPERTY_DELIMITER;
- public static final String SELECTION_MARKER = SELECTION_KEY
- + PROPERTY_DELIMITER;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Spinner spinner = (Spinner) findViewById(R.id.Spinner01);
- // 设置ArrayAdapter
- this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets,
- android.R.layout.simple_spinner_dropdown_item);
- spinner.setAdapter(this.mAdapter);
- // 选中触发事件,在窗口中央显示项目
- OnItemSelectedListener spinnerListener = new myOnItemSelectedListener(
- this, this.mAdapter);
- spinner.setOnItemSelectedListener(spinnerListener);
- }
- /**
- * 用户选中下拉列表中得一项
- */
- public class myOnItemSelectedListener implements OnItemSelectedListener {
- ArrayAdapter<CharSequence> mLocalAdapter;
- Activity mLocalContext;
- // 构造方法
- public myOnItemSelectedListener(Activity c,
- ArrayAdapter<CharSequence> ad) {
- this.mLocalContext = c;
- this.mLocalAdapter = ad;
- }
- //When the user selects an item in the spinner, this method is invoked by the callback chain
- public void onItemSelected(AdapterView<?> parent, View v, int pos,
- long row) {
- //暂时没发现有什么用
- //AndroidUIActivity.this.mPos = pos;
- AndroidUIActivity.this.mSelection = parent.getItemAtPosition(pos).toString();
- TextView resultText = (TextView) findViewById(R.id.SpinnerResult);
- resultText.setText(AndroidUIActivity.this.mSelection);
- }
- //无用
- public void onNothingSelected(AdapterView<?> parent) {
- }
- }
- /*
- * Restores the current state of the spinner (which item is selected, and the value
- * of that item).
- */
- @Override
- public void onResume() {
- super.onResume();
- if (!readInstanceState(this))
- setInitialState();
- Spinner restoreSpinner = (Spinner) findViewById(R.id.Spinner01);
- restoreSpinner.setSelection(getSpinnerPosition());
- }
- /**
- * Read the previous state of the spinner from the preferences file
- */
- public boolean readInstanceState(Context c) {
- SharedPreferences p = c.getSharedPreferences(PREFERENCES_FILE,
- MODE_WORLD_READABLE);
- this.mPos = p.getInt(POSITION_KEY, AndroidUIActivity.DEFAULT_POSITION);
- this.mSelection = p.getString(SELECTION_KEY, "");
- return (p.contains(POSITION_KEY));
- }
- /*
- *Store the current state of the spinner (which item is selected, and the value of that item).
- */
- @Override
- public void onPause() {
- super.onPause();
- if (!writeInstanceState(this)) {
- Toast.makeText(this, "Failed to write state!", Toast.LENGTH_LONG)
- .show();
- }
- }
- /**
- * Write the application's current state to a properties repository.
- */
- public boolean writeInstanceState(Context c) {
- SharedPreferences p = c.getSharedPreferences(
- AndroidUIActivity.PREFERENCES_FILE, MODE_WORLD_READABLE);
- SharedPreferences.Editor e = p.edit();
- e.putInt(POSITION_KEY, this.mPos);
- e.putString(SELECTION_KEY, this.mSelection);
- return (e.commit());
- }
- /**
- * Sets the initial state of the spinner when the application is first run.
- */
- public void setInitialState() {
- this.mPos = DEFAULT_POSITION;
- }
- public int getSpinnerPosition() {
- return this.mPos;
- }
- public void setSpinnerPosition(int pos) {
- this.mPos = pos;
- }
- public String getSpinnerSelection() {
- return this.mSelection;
- }
- public void setSpinnerSelection(String selection) {
- this.mSelection = selection;
- }
- }
main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <!-- Creates a Linear Layout View to contain the spinner
- -->
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <!--
- Creates a spinner widget called Spinner01, within the Linear Layout
- The prompt text comes from the string "planet_prompt" in strings.xml
- Spinner不支持android:drawSelectorOnTop此属性
- -->
- <Spinner
- android:id="@+id/Spinner01"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:drawSelectorOnTop="true"
- android:prompt="@string/planet_prompt" >
- </Spinner>
- <!-- Creates a TextView called SpinnerResult, below the spinner.
- -->
- <TextView
- android:id="@+id/SpinnerResult"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:gravity="center"
- android:text="Result"
- android:textSize="10pt"
- android:textStyle="bold" >
- </TextView>
- </LinearLayout>
strings.xml
- <?xml version="1.0" encoding="utf-8"?>
- <!--
- The string named "app_name" defines the application's visible name.
- The string array "Planets" defines an array of 9 strings. The application loads
- this array into the spinner's array adapter.
- The string "planet_prompt" defines the prompt for the result text box.
- -->
- <resources>
- <string name="app_name">Spinner</string>
- <string-array name="Planets">
- <item>Mercury</item>
- <item>Venus</item>
- <item>Earth</item>
- <item>Mars</item>
- <item>Jupiter</item>
- <item>Saturn</item>
- <item>Uranus</item>
- <item>Neptune</item>
- <item>Pluto</item>
- </string-array>
- <string name="planet_prompt">Select a planet</string>
- </resources>
AndroidManifest.xml
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="cn.lyj.android"
- android:versionCode="1"
- android:versionName="1.0" >
- <uses-sdk android:minSdkVersion="10" />
- <application
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name" >
- <activity
- android:label="@string/app_name"
- android:name=".AndroidUIActivity" >
- <intent-filter >
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- </manifest>
二. 运行结果
启动
点击菜单
选择Pluto