Android官方文檔—User Interface(Input Controls)(Spinners)

下拉列表

下拉列表提供了從集合中選擇一個值的快速方法。在默認狀態下,微調器顯示其當前選定的值。觸摸微調器會顯示一個包含所有其他可用值的下拉菜單,用戶可以從中選擇一個新值。

您可以使用Spinner對象向佈局添加微調器。您通常應該在XML佈局中使用<Spinner>元素執行此操作。例如:

<Spinner
    android:id="@+id/planets_spinner"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

要使用選項列表填充微調器,您需要在Activity或Fragment源代碼中指定SpinnerAdapter。

使用用戶選擇填充微調器


您爲微調器提供的選擇可以來自任何源,但必須通過SpinnerAdapter提供,例如,如果數組中有選項,則提供ArrayAdapter;如果數據庫查詢中有選項,則必須提供CursorAdapter。

例如,如果預先確定了微調器的可用選項,則可以爲它們提供在字符串資源文件中定義的字符串數組:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
        <item>Jupiter</item>
        <item>Saturn</item>
        <item>Uranus</item>
        <item>Neptune</item>
    </string-array>
</resources>

使用像這樣的數組,您可以使用Activity或Fragment中的以下代碼,使用ArrayAdapter實例爲微調器提供數組:

Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
        R.array.planets_array, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);

createFromResource()方法允許您從字符串數組創建ArrayAdapter。此方法的第三個參數是佈局資源,用於定義所選選項在微調控件中的顯示方式。 simple_spinner_item佈局由平臺提供,是您應該使用的默認佈局,除非您想爲微調器的外觀定義自己的佈局。

然後,您應該調用setDropDownViewResource(int)來指定適配器應該用於顯示微調器選項列表的佈局(simple_spinner_dropdown_item是平臺定義的另一個標準佈局)。

調用setAdapter()將適配器應用於Spinner。

響應用戶選擇


當用戶從下拉列表中選擇一個項目時,Spinner對象將接收一個項目選擇的事件。

要爲微調器定義選擇事件處理程序,請實現AdapterView.OnItemSelectedListener接口和相應的onItemSelected()回調方法。例如,這是Activity中接口的實現:

public class SpinnerActivity extends Activity implements OnItemSelectedListener {
    ...

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

    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback
    }
}

AdapterView.OnItemSelectedListener需要onItemSelected()和onNothingSelected()回調方法。

然後,您需要通過調用setOnItemSelectedListener()來指定接口實現:

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(this);

如果使用Activity或Fragment實現AdapterView.OnItemSelectedListener接口(例如上面的示例中),則可以將其作爲接口實例傳遞。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章