2012-10-05 26 views
1

從閱讀Android文檔,我明白它不可能爲Spinner使用addTextChangedListener,但是有沒有替代方案,我錯過了?是否有替代Spinner的TextChangedListener

我已經創建了許多表單,並且我想在未保存的更改時通知用戶(當我使用EditText框時,我可以執行此操作)。

下面是textChangeListener的EditText上的例子:

 inspectionReferenceEditText.addTextChangedListener(new TextWatcher(){ 
     public void afterTextChanged(Editable s) { 
     } 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      changesMade = true; 
     } 

非常感謝。

回答

3

由於微調不涉及用戶輸入文本,所以我沒有看到TextWatcher如何提供幫助。但是,您可以使用OnItemSelectedListener在用戶進行更改時收到通知。

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
    int previous = -1; 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     if(previous != position && previous < -1) { 
      Log.v("Example", "Item Selected: " + parent.getItemAtPosition(position).toString()); 
      // Do something 
     } 
     previous = position; 
    } 

    public void onNothingSelected(AdapterView<?> parent) {} 
}); 
+0

好的薩姆我會給它一個去,並儘快剔。感謝您的快速回復,非常感謝。 – Scamparelli

+0

嗨山姆 - 與此問題是,如果您設置微調器顯示一個特定的值,當活動創建時,監聽器報告這是'onItemSelected'..我需要能夠設置值的形式,然後設置聽衆..我想周圍的工作是設置一個計數器,然後做一些事情,當它擊中2 .. – Scamparelli

+0

我更新了代碼。正如您注意到Spinner初始化時偵聽器會觸發,但當用戶重新選擇現有選擇時它也會觸發......我添加了一個快速檢查,因爲您只對實質性更改感興趣。 – Sam