2012-08-23 78 views
2

我目前在我的應用程序中有一大堆微調器。我沒有想太多,對於每一個微調,第一個索引填充了N/A。這不是什麼大不了的事,但我希望能讓它變得更清潔。將微調器設置爲未選中

我想知道是否有一種方法,而不是調用setSelection(index),我想知道是否有一種方法來設置一個微調沒有選擇任何東西。

基本上,我希望微調器有一個在其中的項目列表,但沒有顯示它們,直到你點擊它。我也不想在那裏有一個空白的索引。

我認爲它很可能沒有辦法做到這一點,所以如果有人確定這一點,請讓我知道。

謝謝。

+0

看到有:http://stackoverflow.com/questions/867518/how-to-make-an-android-spinner-with-initial-text-select-one –

回答

4

紡紗者必須具有選定的狀態。我會建議有一個「不選擇」選項

另一種選擇是讓底部按鈕被選中,然後將其設置爲不可見(我設置最後一個選擇的原因是,所以你沒有一大塊在您的應用程序空白爲看起來有點沒用的):

case SPINNER_OPTION_FIRST: 
    yourSpinnerLabel.setVisibility(View.VISIBLE); 
    yourTextField.setVisibility(View.VISIBLE); 
    break;   

// do this for all your other ones if you want 

case SPINNER_OPTION_LAST: 
    yourSpinnerLabel.setVisibility(View.GONE); 
    yourTextField.setVisibility(View.GONE); 

也許不是最有效的,但它的作品,所以我希望幫助(仍然是新故切我一馬)!

6

它最好把第一個位置作爲空白,以便它可以被看作沒有選擇。

-1

我試圖

// getSelectedItemPosition() returns -1 if there is nothing selected 
spinner.setSelection(-1); 

但失敗了[微調從列表中設置第1個要素。

我添加了「空白位置」來模仿「沒有選擇任何東西」的微調數據。請注意,'下拉'列表中不顯示'空位'。

順便說一句。對於C#抱歉,希望這個概念清晰可見。

定義適配器:

class CustomAdapter<T> : ArrayAdapter<T> { 
    public override int Count { 
     get { return base.Count - 1; } 
    } 
} 

初始化微調:

var data = new List<string> { "elem 1", "elem 2", "" }; 
spinner.Adapter = new CustomAdapter<String>(this, Resource.Layout.SimpleSpinnerItem, data); 
spinner.SetSelection(2); 
1

修改其保存數據可能會導致大量的錯誤或難以管理的數據的列表。 您可以使用NONE項目將適配器添加到適配器中,而不是操作該列表。 像這樣

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item); 
    adapter.add("NONE"); 
    adapter.addAll(products); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    mSpinner.setAdapter(adapter); 
相關問題