wake-up-neo.com

Wie kann eine Fehlermeldung für den Spinner in Android eingestellt werden?

Ich möchte in der Lage sein, Code wie diesen aufzurufen, ähnlich wie setError in einer TextView eingestellt ist:

spinner.setError("Error message");

setError funktioniert jedoch nur für einen EditText, nicht für einen Spinner.

Ich möchte den Benutzer benachrichtigen, wenn das Drehfeld nicht ausgewählt ist. Wie kann ich eine solche Benachrichtigung durchführen ohne Toast?

38
Gopinath S

In diesem Thread gibt es einige Lösungen Erstellen eines setError () für den Spinner :

Das EdmundYeung99 funktioniert für mich, entweder Sie verwenden Ihren eigenen Adapter oder nicht. Fügen Sie einfach den folgenden Code in Ihre Validierungsfunktion ein:

TextView errorText = (TextView)mySpinner.getSelectedView();
errorText.setError("");
errorText.setTextColor(Color.RED);//just to highlight that this is an error
errorText.setText("my actual error text");//changes the selected item text to this

Stellen Sie jedoch sicher, dass der Spinner-Adapter mindestens einen Wert enthält, wenn Sie die Überprüfung durchführen. Wenn nicht, wie ein leerer Adapter, der darauf wartet, mit Daten gefüllt zu werden, geben Sie Ihrem Adapter eine leere Zeichenfolge:

ArrayAdapter<String> adapter = new ArrayAdapter<>(context, Android.R.layout.simple_spinner_item, new String[]{""});
mySpinner.setAdapter(adapter);
66
Lionel T.

Die Spinner-Klasse gibt eine Textansicht zurück, wenn Sie getSelectedView() verwenden. Sie können also setError() indirekt verwenden.

((TextView)spinner.getSelectedView()).setError("Error message");

Ergebnisse sollten sein wie ...

setError in spinner

Hoffe, es wird hilfreich sein!

30
Khan

Hier ist eine Lösung verwendet eine versteckte Textansicht, um zusätzlich zum Fehlersymbol im Drehfeld eine Popup-Meldung anzuzeigen. In einem Fehlerzustand sieht der Spinner folgendermaßen aus:

Spinner in invalid state

Wenn kein Fehler vorliegt, sieht es so aus.

Spinner in valid state

Die vollständige Lösung ist hier dokumentiert: https://stackoverflow.com/a/29956372/3063884

2
CJBS