Spinner在android中通常用來實現下拉式清單,但可惜的是Spinner沒有直接實作類別似text-value這樣的自動綁定功能。某些情況下,列表展示的文本並不是我們想要取得的值,這樣就需要手動實現資料繫結。首先用2個數組來分別表示顯示的文本和要取的值,代碼如下:
private final static String[] texts = {"張三", "李四", "王五"}; private final static int[] values = {1, 2, 3}; private Spinner spinner; private ArrayAdapter<String> adapter;
這裡texts是下拉式清單中顯示的文本,values是根據列表選定後指定的值。接著就是實現Spinner了,代碼如下:
spinner = (Spinner)findViewById(R.id.spinner); //綁定要顯示的texts adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, texts); //設定下拉式清單的風格
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(new SpinnerSelectedListener()); spinner.setVisibility(View.VISIBLE); class SpinnerSelectedListener implements OnItemSelectedListener{ public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { //利用數組中的對應位置取得values中需要的值 int Id = values[arg2]; } } }
另外,也可以用spinner.getSelectedItem().toString()來取得選定的文本,或者用spinner.getSelectedItemPosition()來取得選定文本的位置,從而可以用values[spinner.getSelectedItemPosition()]來取得對應的值。
如果你的列表資料是動態獲得的。可以使用ArrayList代替數組來動態添加。