Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android UI組件Spinner下拉列表詳解

Android UI組件Spinner下拉列表詳解

編輯:關於Android編程

Spinner下拉列表

該布局對應的關系圖:
這裡寫圖片描述

常用屬性:android:entries(指定spinner要顯示的字符串資源。必須是在strings資源文件中定義的字符串資源)android:spinnerMode(spinner的模式,枚舉值有兩個值dialog彈窗顯示和dropdown下拉顯示)android:dropDownWidth(下拉框的寬度,單位通常是dp)android:prompt(當spinnerMode的值是dialog時,彈出的對話框式的下列列表的提示。如果
spinnerMode的值是dropdown時沒有效果。注意:此處的值不能直接使用直接字符串,
必須使用引用(字符串資源))

1.通過entries設置數據項,在values文件夾下的strings中添加數據的值

這裡寫圖片描述

在strings.xml中添加一組array數據項,然後通過在entries中設置就可以設置對應的值

<Spinner
    android:layout_width="match_parent"
    android:entries="@array/data"//資源文件設置數據
    android:layout_height="wrap_content">
 </Spinner>

2.設置android:spinnerMode:

<Spinner
    android:id="@+id/spinner"
    android:layout_width="match_parent"
    android:entries="@array/data"
    android:spinnerMode="dialog"
    android:layout_height="wrap_content">
  </Spinner>

值為dialog的顯示為彈框顯示

這裡寫圖片描述

值如果為dropdown的顯示如下:

這裡寫圖片描述

android:dropDownWidth設置下拉寬度

<Spinner
    android:id="@+id/spinner"
    android:layout_width="match_parent"
    android:entries="@array/data"
    android:spinnerMode="dropdown"
    android:dropDownWidth="70dp"
    android:layout_height="wrap_content">
  </Spinner>

效果如下圖:

這裡寫圖片描述

數據源的獲取方式:通過ArrayAdapter適配器設置數據數據>

什麼是適配器:將控件在加載數據過程中的同樣的部分 抽取為代碼,每次加載的時候都調用這部分代碼,生成
要返回的內容,類似於模具
關於ArrayAdapter簡單介紹下:
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_dropdown_item,data);

關於ArrayAdapter構造方法的說明:

1、ArrayAdapter(context, resource, objects)
參數一:上下文對象
參數二:布局文件的id,注意該布局文件有且只能有一個TextView標簽
參數三:原始數據,List集合或數組都可以。
2、ArrayAdapter(context, resource, textViewResourceId, objects)
參數一:上下文對象
參數二:布局文件的id,注意該布局文件中至少有一個TextView標簽
參數三:參數二布局文件中要顯示數據的TextView的id
參數四:原始數據,List集合或數組都可以。

public class MainActivity extends AppCompatActivity {
  private String[] data;
  private List<String> data1;
  private Spinner spinner;
  private ArrayAdapter<String> adapter;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.spinner);
    spinner = (Spinner)findViewById(R.id.spinner);
    data = getResources().getStringArray(R.array.data);
    data1 = new ArrayList<>();
    for(int i = 1; i < 10; i++){
      data1.add("這是第" + i +"個");
    }
    //data可以修改為data1,數據可以是數組也可以是集合
    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,data);
    spinner.setAdapter(adapter);
  }
}

監聽事件

對於Spinner使用的監聽事件為:setOnItemSelectedListener(OnItemSelectedListener listener)

public class SpinnerActivity extends Activity implements OnItemSelectedListener {

  /**
  * 當item被選中時,會調用此方法
  */
  public void onItemSelected(AdapterView<?> parent, View view, 
      int pos, long id) {
    // An item was selected. You can retrieve the selected item using
    // parent.getItemAtPosition(pos)
  }
  /**
  * 當數據項的值設置為空時,就會調用此方法,通過調用adapter.clear()方法清空數據,並且刷新界面
  * 時,會調用次方法
  */
  public void onNothingSelected(AdapterView<?> parent) {
    // Another interface callback
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved