Comment un message d'erreur peut-il être défini pour le Spinner dans Android?

Je voudrais pouvoir appeler un code comme celui-ci, de la même manière que setError est défini sur une TextView:

 spinner.setError("Error message"); 

Cependant, setError ne fonctionne que pour un EditText, pas pour un Spinner.

  • Mise à jour de la boîte de dialogue de progression dans Activity from AsyncTask
  • Android - Création d'une nouvelle activité dans Eclipse
  • L'application Android ne doit pas s'exécuter sur des périphériques enracinés
  • Autoriser uniquement le nombre et la période (.) Dans l'édition de texte dans Android
  • Définissez la police pour toutes les textViews dans l'activité?
  • Android Fragments: Quand utiliser hide / show ou ajouter / supprimer / remplacer?
  • Je souhaite informer l'utilisateur si le champ de la filière n'est pas sélectionné. Comment puis-je effectuer une telle notification sans utiliser un Toast ?

  • Mylib.so a des déménagements de texte. Cela gaspille la mémoire et constitue un risque pour la sécurité. S'il-vous-plaît, réparez
  • Android Studio build échoue avec "Task" non trouvé dans le projet racine 'MyProject'. "
  • Fermer la fenêtre contextuelle d'Android avec la presse arrière
  • UI Android - Vue de défilement horizontale Android
  • Joignez-vous au processus Android de Qt Creator
  • Mise à jour des services Google Play en émulateur
  • 3 Solutions collect form web for “Comment un message d'erreur peut-il être défini pour le Spinner dans Android?”

    Il existe quelques solutions dans ce thread Création d'un setError () pour Spinner :

    L' EdmundYeung99 travaille pour moi, vous utilisez votre propre adaptateur ou non. Mettez simplement 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 d'avoir au moins une valeur dans l'adaptateur Spinner lorsque vous effectuez votre vérification. Sinon, comme un adaptateur vide en attente d'être peuplé, faites que votre adaptateur obtienne une chaîne vide:

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

    La classe Spinner renverra une vue texte lorsque vous utilisez getSelectedView() . Vous pouvez donc utiliser setError() indirectement.

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

    Les résultats devraient être comme …

    SetError in spinner

    Espérons que cela vous sera utile!

    Voici une solution qui utilise un TextView caché pour afficher un message contextuel, en plus de l'icône d'erreur dans le spinner. Dans un état d'erreur, le Spinner ressemble à ceci:

    Spinner in invalid state

    Lorsqu'il n'est pas dans un état d'erreur, cela ressemble à cela.

    Spinner dans un état valide

    La solution complète est documentée ici: https://stackoverflow.com/a/29956372/3063884

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.