2013-05-08 4 views
16

Muttersprachler, also würde ich mich über meine schlechten Englischkenntnisse entschuldigen.Warum ist die onNothingSelected-Methode im Spinner-Listener erforderlich?

Ich studiere Android seit 5 Wochen. Ich habe versucht, einen Spinner zu implementieren, und mein Mentor fragte, warum die onNothingSelected-Methode benötigt wird. Ich hatte nichts zu sagen.

Also, warum brauche ich diese Methode? Kannst du antworten?

Der folgende Code ist mein Spinner. Es macht richtig was ich vorhatte.

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

Die 'onNothingSelected' ist eine Rückrufmethode, die aufgerufen werden soll, wenn die Auswahl in dieser Ansicht verschwindet. – DroidBender

+0

Soweit ich sehe, brauchen Sie es, um einen Toast zu zeigen? So informieren Sie den Benutzer, wenn er nichts auswählt. Probieren Sie es selbst aus, kommentieren Sie diese Codezeilen und schauen Sie sich an, wie Ihre App funktioniert. – sandkasten

Antwort

4

Vom doc here.

onNothingSelected ist eine Callback-Methode aufgerufen werden soll, wenn die Auswahl aus dieser Ansicht verschwindet. Die Auswahl kann zum Beispiel verschwinden, wenn die Berührung aktiviert ist oder wenn der Adapter leer wird.

Ich denke, es beantwortet so ziemlich Ihre Frage. Wenn also Ihr Spinner aus einem anderen Grund verschwindet, außer wenn Sie das Element auswählen, wird onNothingSelected aufgerufen. So wie der Name schon sagt, es ist notwendig, um herauszufinden, wann nichts

+1

Die Dokumente scheinen falsch zu sein, der Callback wird nicht abgewiesen, siehe hier http://Stackoverflow.com/a/3474463/819355 – marmor

+1

Es verhält sich einfach nicht so, obwohl es sollte. –

6

ausgewählt wird als die Dokumentation beschreibt:

Callback-Methode aufgerufen werden, wenn die Auswahl aus dieser Sicht verschwindet. Die Auswahl kann zum Beispiel verschwinden, wenn die Berührung aktiviert ist oder wenn der Adapter leer wird.

Dies bedeutet, dass die Methode aufgerufen wird, wenn das aktuell ausgewählte Element aus der Liste der verfügbaren Elemente entfernt wird. Wie im Dokument beschrieben, kann dies unter anderen Umständen auftreten. Wenn der Adapter jedoch so geändert wird, dass das aktuell ausgewählte Element nicht mehr verfügbar ist, wird die Methode aufgerufen.

Diese Methode kann verwendet werden, damit Sie festlegen können, welcher Artikel ausgewählt wird, da der vorherige Artikel nicht mehr verfügbar ist. Dies bedeutet, dass der Spinner nicht automatisch das nächste Element in der Liste auswählen muss.

+1

Woher wissen Sie, welches Element nicht ausgewählt wurde, wenn der einzige Parameter "AdapterView" ist? Sind Sie sicher, dass diese Funktion aufgerufen wird? –

+0

Der Spinner kann Ihnen nicht sagen, welches Element nicht ausgewählt wurde, da es nicht mehr in seinem Adapter vorhanden ist. Wenn Sie wissen möchten, welches Element oder welcher Index zuvor ausgewählt wurde, müssen Sie diese Informationen selbst speichern. – TheIT

Verwandte Themen