2013-05-08 16 views
16

madrelingua inglese, quindi direi scusa per le mie cattive capacità di inglese per voi ragazzi.Perché il metodo onNothingSelected è necessario nel listener di spinner?

Ho studiato Android da 5 settimane. Ho provato a implementare uno spinner e il mio mentore ha chiesto perché è necessario il metodo onNothingSelected. Non avevo niente da dire.

Quindi, perché ho bisogno di quel metodo ?? Puoi rispondere?

Il seguente codice è il mio spinner. Fa correttamente quello che intendevo.

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

Il 'onNothingSelected' è un metodo di richiamata da richiamare quando la selezione scompare da questa vista. – DroidBender

+0

Per quanto ne vedo, ne hai bisogno per mostrare un brindisi? Quindi informi l'utente se non ha scelto nulla. Provalo tu stesso, commenta queste righe di codice e dai un'occhiata a come funziona la tua app. – sandkasten

risposta

4

Dal doc here.

onNothingSelected è un metodo callback da richiamare quando la selezione scompare da questa vista . La selezione può scomparire ad esempio quando viene attivato il tocco o quando l'adattatore si svuota.

Penso che risponda alla tua domanda. Quindi, se il tuo spinner scompare per altri motivi tranne la selezione dell'oggetto, verrà chiamato onNothingSelected. Così come il suo nome dice che è necessario per scoprire quando nulla è selezionato

+1

I documenti sembrano essere sbagliati, la richiamata non viene richiamata, vedere qui http://stackoverflow.com/a/3474463/819355 – marmor

+1

Semplicemente non si comporta in questo modo, anche se dovrebbe. –

6

Come la documentazione descrive: metodo

richiamata da richiamare quando la selezione scompare da questo punto di vista. La selezione può scomparire ad esempio quando viene attivato il tocco o quando l'adattatore si svuota.

Ciò significa che il metodo viene chiamato ogni volta che l'elemento attualmente selezionato viene rimosso dall'elenco di elementi disponibili. Come descrive il documento, ciò può verificarsi in circostanze diverse, ma generalmente se l'adattatore viene modificato in modo tale che l'elemento attualmente selezionato non è più disponibile, verrà chiamato il metodo.

Questo metodo può essere utilizzato in modo che sia possibile impostare quale elemento verrà selezionato poiché l'articolo precedente non è più disponibile. Questo è invece di lasciare che lo spinner selezioni automaticamente la voce successiva nell'elenco.

+1

Come fai a sapere quale elemento è stato deselezionato, se l'unico parametro è "AdapterView"? Sei sicuro che sia quando viene chiamata questa funzione? –

+0

Lo spinner non può dirti quale oggetto è stato deselezionato poiché non esiste più nel suo adattatore. Se si desidera sapere quale elemento o indice è stato precedentemente selezionato, sarà necessario memorizzarlo personalmente. – TheIT

Problemi correlati