Android UI組件Spinner下拉式清單詳解_Android

來源:互聯網
上載者:User

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

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

聯繫我們

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