2013-05-08 79 views
16

英語爲母語的人,所以我會對你們說我的英語不好。爲什麼spinner listener需要onNothingSelected方法?

自5周前我一直在學習Android。我試圖實現一個微調,我的導師問爲什麼onNothingSelected方法是必要的。我無話可說。

那麼,爲什麼我需要該方法?你能回覆嗎?

以下代碼是我的微調。它正確地做了我想要的。

public class SpinnerViewPractice extends Activity { 
private Spinner spinner; 
private String spinner_value = ""; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.spinnerviewpractice); 

    spinner = (Spinner)findViewById(R.id.spinner1); 

    String[] str = {"","good", "dislike", "like", "hate", "moderate"}; 
    spinner.setPrompt("Set Text"); 
    ArrayAdapter<String> list = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, str); 
    spinner.setAdapter(list); 
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      TextView tv = (TextView)arg1; 
      spinner_value = tv.getText().toString(); 
      if(spinner_value.length() == 0) 
      { 
       spinner_value = "Nothing";     
      } 
      Toast.makeText(SpinnerViewPractice.this, spinner_value, Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      Toast.makeText(SpinnerViewPractice.this, "NothingSelected", Toast.LENGTH_SHORT).show(); 
     }   
    }); 
} 

}

+0

'onNothingSelected'是一個回調方法,當選擇從這個視圖中消失時被調用。 – DroidBender 2013-05-08 11:35:30

+0

據我看,你需要它來表明敬酒?所以你通知用戶他是否選擇了什麼。只需親自嘗試一下,註釋掉這些代碼行,看看你的應用程序是如何工作的。 – sandkasten 2013-05-08 11:36:11

回答

4

從DOC here

onNothingSelected是當選擇從此 視圖中消失時要調用的回調方法。例如,當觸摸激活 或適配器變空時,選擇可以消失。

我認爲它幾乎可以解答您的問題。所以如果你的微調因其他原因消失,除了選擇項目,onNothingSelected將被調用。因此,作爲它的名字告訴它需要找出當什麼也沒選擇

+1

該文檔似乎是錯誤的,回調不會被解僱,請參閱http://stackoverflow.com/a/3474463/819355 – marmor 2015-07-14 12:04:38

+1

它不會像這樣,雖然它應該。 – 2017-08-21 02:20:12

6

由於文檔描述:當選擇從該視圖中消失時調用

回調方法。例如,當觸摸被激活或者適配器變空時,選擇可以消失。

這意味着只要當前選擇的項目從可用項目列表中刪除,就會調用該方法。正如文檔所描述的,這可能發生在不同的情況下,但通常如果適配器被修改使得當前選擇的項目不再可用,那麼該方法將被調用。

可以使用此方法,以便您可以設置哪個項目將被選中,因爲前一個項目不再可用。這不是讓微調器自動選擇列表中的下一個項目。

+1

如何知道哪個項目被取消選擇,如果唯一的參數是「AdapterView」?你確定這個函數被調用了嗎? – 2014-11-28 13:57:09

+0

微調器不能告訴你哪個項目被取消選擇,因爲它不再存在於它的適配器中。如果您想知道之前選擇了哪個項目或索引,則需要自行存儲該信息。 – TheIT 2015-03-18 02:52:42

相關問題