android學習之spinner控制項的使用

來源:互聯網
上載者:User

在開發android項目中,spinner控制項使用的還是比較多的。下面就來討論一下spinner的知識。以備以後自己忘記前來查閱。本節還涉及到ArrayAdatper的使用方法。

直接給定例子,離職中有詳細的介紹:

在layout中main.xml檔案的內容為:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<Spinner
 android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/spinner"
    android:text="spinner"
/>
</LinearLayout>

 

在layout中string.xml檔案的內容為:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, SpinnerActivity!</string>
    <string name="app_name">SpinnerTest</string>
   
    <string-array name="spinner">
     <item>a</item>
     <item>x</item>
     <item>d</item>
     <item>c</item>
     <item>v</item>
     <item>f</item>
    </string-array>
</resources>

 

java代碼如下:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

public class SpinnerActivity extends Activity {
 Spinner spinner = null;
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
  
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  spinner = (Spinner) findViewById(R.id.spinner);

  /**
   * 通過createFromResource()方法建立ArrayAdapter對象
   * 第一個參數是內容物件
   * 第二個參數引用了string.xml檔案當中的數組,
   * 第三個參數用來指明spinner的樣式,是一個布局id,該布局id由android系統提供,也可以替換自己定義的布局檔案
   */
  ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
    this, R.array.spinner, android.R.layout.simple_spinner_item);
  //設定spinner顯示的樣式,引用一個android系統提供的樣式,系統內建了比較多的樣式,大
  //家可以選擇自己喜歡的樣式或客戶定製的樣式,當能也可以自己制定樣式
  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  spinner.setAdapter(adapter);
  spinner.setPrompt("測試");
  
  //設定spinner控制項的監聽器
  spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

   //當使用者選定了一個條目時,就會調用該方法
   /**
    * 第一個參數:代表整個列表頁就是包含所有條目的列表
    * 第二個參數:代表被選中的條目的view
    * 第三個參數:位置
    * 第四個參數:空間的id
    */
   @Override
   public void onItemSelected(AdapterView<?> parent, View view,
     int position, long id) {
    /**
     * getItemAtPosition()
     * 擷取相關的資料列表中的指定位置
     */
    Toast.makeText(parent.getContext(),"The planet is "+ parent.getItemAtPosition(position).toString(),
      Toast.LENGTH_LONG).show();
   }

   @Override
   public void onNothingSelected(AdapterView<?> parent) {

   }
  });
 }
}

這樣就可以控制一個spinner控制項了。以上這個例子使用ArrayAdapter非常局限,很難做到動態添加資料。下面這個例子就是說明自己定義布局檔案,自己用一個集合添加資料。

 

要在layout裡面添加一個布局檔案item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
 android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/textView"
/>
</LinearLayout>

其他的和上面例子一樣;看java代碼:

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

public class SpinnerActivity extends Activity {
 Spinner spinner = null;
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
  
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  
  spinner = (Spinner) findViewById(R.id.spinner);

  /**
   * 通過createFromResource()方法建立ArrayAdapter對象
   * 第一個參數是內容物件
   * 第二個參數引用了string.xml檔案當中的數組,
   * 第三個參數用來指明spinner的樣式,是一個布局id,該布局id由android系統提供,也可以替換自己定義的布局檔案
   */
  //ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spinner, android.R.layout.simple_spinner_item);
  //設定spinner顯示的樣式,引用一個android系統提供的樣式,系統內建了比較多的樣式,大
  //家可以選擇自己喜歡的樣式或客戶定製的樣式,當能也可以自己制定樣式
  //adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  
  
  List<String> list = new ArrayList<String>();
  list.add("wo");
  list.add("ai");
  list.add("ni");
  /**
   * 調用ArrayAdapter的建構函式建立一個ArrayAdapter對象
   * 第一個參數指上下文
   * 第二個參數指定了下拉式功能表中每一個條目的樣式
   * 第三個參數指定了TextView空間的id
   * 第四個參數要添加資料的集合,為整個列表提供資料
   */
  ArrayAdapter adapter = new ArrayAdapter(this, R.layout.item, R.id.textView, list);
  
  
  spinner.setAdapter(adapter);
  spinner.setPrompt("測試");
  
  //設定spinner控制項的監聽器
  spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

   //當使用者選定了一個條目時,就會調用該方法
   /**
    * 第一個參數:代表整個列表頁就是包含所有條目的列表
    * 第二個參數:代表被選中的條目的view
    * 第三個參數:位置
    * 第四個參數:空間的id
    */
   @Override
   public void onItemSelected(AdapterView<?> parent, View view,
     int position, long id) {
    /**
     * getItemAtPosition()
     * 擷取相關的資料列表中的指定位置
     */
    Toast.makeText(parent.getContext(),"The planet is "+ parent.getItemAtPosition(position).toString(),
      Toast.LENGTH_LONG).show();
   }

   @Override
   public void onNothingSelected(AdapterView<?> parent) {

   }
  });
 }
}

這樣就實現了再list中望列表中動態添加資料。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.