Android控制項-Spinner

來源:互聯網
上載者:User

標籤:

下拉式清單 Spinner,Spinner是一個每次只能選擇所有項的一個項的控制項。它的項來自於與之相關聯的適配器中。
Spinner的使用,可以極大提高使用者的體驗性。當需要使用者選擇的時候,可以提供一個下拉式清單將所有可選的項列出來。供使用者選擇。

一、使用數組作為資料來源

布局檔案:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:paddingBottom="@dimen/activity_vertical_margin"      android:paddingLeft="@dimen/activity_horizontal_margin"      android:paddingRight="@dimen/activity_horizontal_margin"      android:paddingTop="@dimen/activity_vertical_margin"      tools:context=".MainActivity" >        <Spinner          android:id="@+id/spinner1"          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:layout_alignParentLeft="true"          android:layout_alignParentTop="true" />    </RelativeLayout>  

 MainActivity.java

package com.example.lesson16_spinner;    import java.util.ArrayList;  import java.util.HashMap;  import java.util.List;  import java.util.Map;    import android.app.Activity;  import android.os.Bundle;  import android.view.Menu;  import android.view.View;  import android.widget.AdapterView;  import android.widget.ArrayAdapter;  import android.widget.SimpleAdapter;  import android.widget.Spinner;  import android.widget.Toast;    public class MainActivity extends Activity {      // 聲明spinner對象      private Spinner spinner;        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);          spinner = (Spinner) findViewById(R.id.spinner1);          //使用數組作為資料來源           final String arr[] = new String[] { "周一", "周二", "周三", "周四", "周五", "周六",                  "周七" };          // adpater對象           ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, arr);                  List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();            Map<String, Object> map = new HashMap<String, Object>();            map.put("logo", R.drawable.ic_launcher);          map.put("text", "xxxx說明操作");            Map<String, Object> map2 = new HashMap<String, Object>();            map2.put("logo", R.drawable.ic_launcher);          map2.put("text", "xxx說明xxx");            data.add(map);          data.add(map2);            SimpleAdapter simpleAdapter = new SimpleAdapter(this, data,                  R.layout.activity_item, new String[] { "logo", "text" },                  new int[] { R.id.imageView1, R.id.textView1 });          // 設定顯示的資料           spinner.setAdapter(arrayAdapter);            //spinner.setAdapter(simpleAdapter);            Toast.makeText(getApplicationContext(),"main Thread"+ spinner.getItemAtPosition(spinner.getSelectedItemPosition()), Toast.LENGTH_LONG).show();            // 註冊事件          spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {                @Override              public void onItemSelected(AdapterView<?> parent, View view,                      int position, long id) {                    // String content = arr[position];                    Spinner spinner = (Spinner) parent;                    Toast.makeText(getApplicationContext(),                          "xxxx" + spinner.getItemAtPosition(position),                          Toast.LENGTH_LONG).show();                }                @Override              public void onNothingSelected(AdapterView<?> parent) {                  Toast.makeText(getApplicationContext(), "沒有改變的處理",                          Toast.LENGTH_LONG).show();                }          });        }        @Override      public boolean onCreateOptionsMenu(Menu menu) {          // Inflate the menu; this adds items to the action bar if it is present.          getMenuInflater().inflate(R.menu.main, menu);          return true;      }    }  

 

效果如下:


二、使用XML作為資料來源(非本人代碼)

布局檔案:

<?xml version="1.0" encoding="utf-8"?>  <resources>      <string-array name="plantes">          <item>NOKIA</item>          <item>MOTO</item>          <item>HTC</item>          <item>LG</item>          <item>其他</item>      </string-array>  </resources>  

 java代碼:

import android.app.Activity;  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;    public class SpinnerActivity extends Activity {            private TextView view2;      private Spinner spinner2;      private ArrayAdapter adapter2;        @Override      protected void onCreate(Bundle savedInstanceState) {          // TODO Auto-generated method stub          super.onCreate(savedInstanceState);          setContentView(R.layout.spinner);            spinner2 = (Spinner) findViewById(R.id.spinner02);          view2 = (TextView) findViewById(R.id.spinnerText02);            //將可選內容與ArrayAdapter串連起來          adapter2 = ArrayAdapter.createFromResource(this, R.array.plantes, android.R.layout.simple_spinner_item);            //設定下拉式清單的風格    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);            //將adapter2 添加到spinner中          spinner2.setAdapter(adapter2);            //添加事件Spinner事件監聽            spinner2.setOnItemSelectedListener(new SpinnerXMLSelectedListener());            //設定預設值          spinner2.setVisibility(View.VISIBLE);                }            //使用XML形式操作      class SpinnerXMLSelectedListener implements OnItemSelectedListener{          public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,                  long arg3) {              view2.setText("你使用什麼樣的手機:"+adapter2.getItem(arg2));          }            public void onNothingSelected(AdapterView<?> arg0) {                        }                }  }  

 

Android控制項-Spinner

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.