Wie Validierungsfehler für ein Spinner Widget ähnlich wie TextView.setError() anzuzeigen Ich möchte nicht ein neues Dialogfeld für jeden Spinner öffnen Validierungsfehler, android.widget.Spinner-Klasse hat keine setError-MethodeWie Validierungsfehler für ein Spinner-Widget ähnlich wie TextView.setError() angezeigt wird
7
A
Antwort
0
So können Sie 'setError' in Ihrem getView im Adapter von Spinner verwenden. Natürlich, wenn xml Ihr Artikel Ihrer Spinner einen Textview hat:
if(requeriedField && item.getValue() == 0){
img_tittle_spinner.setError(activity.getResources().getString(R.string.FieldRequired));
}
18
Wenn Ihr Spinner ist Set-up mit Standardelement betrachtet die getSelectedView()
Methode auf Spinner Klasse ein TextView
zurück. Und das kann man setError(CharSequence)
hier nennen, ist, was ich tat:
View selectedView = spinner.getSelectedView();
if (selectedView != null && selectedView instanceof TextView) {
TextView selectedTextView = (TextView) selectedView;
if (!valid) {
String errorString = selectedTextView.getResources().getString(mErrorStringResource);
selectedTextView.setError(errorString);
}
else {
selectedTextView.setError(null);
}
}
Ergebnis sieht wie folgt auf Android 4.4:
0
Ein etwas sauberer Weg von Diederik den Code zu tun:
static public void setSpinnerError(Spinner spinner, String error){
View selectedView = spinner.getSelectedView();
if (selectedView != null && selectedView instanceof TextView) {
TextView selectedTextView = (TextView) selectedView;
selectedTextView.setError(error);
}
}
Setzen Sie einfach error
auf null
, wenn Sie es ablehnen möchten.
Wie Spinner Standardwert festlegen, da jedes Mal, wenn ich spinner.getSelectedView() aufrufen, ich null, weil auf meinem Spinner nichts ausgewählt ist. – vikifor