Comment définir un message d'erreur pour le Spinner dans Android?
j'aimerais pouvoir appeler un code comme celui-ci, similaire à la façon dont setError
est défini sur un TextView:
spinner.setError("Error message");
Toutefois, setError
ne fonctionne que pour un EditText, pas pour un Spinner.
je veux prévenir l'utilisateur si le champ spinner n'est pas sélectionné. Comment puis-je effectuer une telle notification sans porter un Toast ?
3 réponses
il y a quelques solutions dans ce fil créant un setError () pour le fileur :
le EdmundYeung99 l 'un fonctionne pour moi, soit vous utilisez votre propre adaptateur ou pas. Il suffit de mettre le code suivant dans votre fonction de validation:
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
mais, assurez-vous que vous avez au moins une valeur dans l'adaptateur Spinner lorsque vous faites votre vérification. Si ce n'est pas le cas, comme un adaptateur vide être peuplé, faire votre adaptateur obtenir une chaîne vide:
ArrayAdapter<String> adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, new String[]{""});
mySpinner.setAdapter(adapter);
renvoie un textview lorsque vous utilisez getSelectedView()
. Vous pouvez donc utiliser setError()
indirectement.
((TextView)spinner.getSelectedView()).setError("Error message");
Les résultats devraient être les mêmes ...
espérons qu'il sera utile!
Voici une solution qui utilise un TextView caché pour faire apparaître un message pop-up, en plus de l'icône d'erreur dans le spinner. Dans un État d'erreur, le Spinner ressemble à ceci:
quand il n'est pas dans un État d'erreur, il ressemble à ceci.
la solution complète est documentée ici: https://stackoverflow.com/a/29956372/3063884