下拉列表
下拉列表提供了從集合中選擇一個值的快速方法。在默認狀態下,微調器顯示其當前選定的值。觸摸微調器會顯示一個包含所有其他可用值的下拉菜單,用戶可以從中選擇一個新值。
您可以使用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接口(例如上面的示例中),則可以將其作爲接口實例傳遞。