46 votes

Android Effacement de tous les champs EditText avec le bouton Clear

Comment puis-je effacer tous les EditText champs dans une mise en page avec un Clear Button. J'ai un enregistrement de l'Activité qui a environ 10 EditTexts. Je sais que je pourrais aller récupérer une référence à chaque particulier et puis, set.Text(""); Mais je suis à la recherche d'une dynamique de manière élégante. Éventuellement saisir l' Layout et boucle sur tous les éléments y chercher de l' EditText types et de définir ensuite ceux d' "". Vous ne savez pas comment faire, que si et essayé de chercher sur le web, mais pas de chance. Tout exemple de code?

67voto

Guru Points 1786

La réponse par @Pixie est grande, mais je voudrais en faire beaucoup mieux.

Cette méthode fonctionne bien que si tous les EditText sont dans un seul(un) mise en page, mais quand il y a des tas de imbriquée dispositions de ce code n'a pas affaire avec eux.

Après de me gratter la tête un moment, je l'ai fait à la suite de la solution:

private void clearForm(ViewGroup group)
{       
    for (int i = 0, count = group.getChildCount(); i < count; ++i) {
    View view = group.getChildAt(i);
    if (view instanceof EditText) {
        ((EditText)view).setText("");
    }

    if(view instanceof ViewGroup && (((ViewGroup)view).getChildCount() > 0))
        clearForm((ViewGroup)view);
}
}

Pour utiliser cette méthode suffit d'appeler cela de manière suivante:

ViewGroup group = (ViewGroup) findViewById(R.id.sign_up);
clearForm(group);

Où vous pouvez remplacer votre R. id.sign_up avec l'id de racine mise en page de votre fichier XML.

J'espère que cela aidera beaucoup de gens comme moi.

:)

30voto

Michael Points 16659

Vous pouvez parcourir tous les enfants d'un groupe de vues et effacer tous les champs EditText :

 ViewGroup group = (ViewGroup)findViewById(R.id.your_group);
for (int i = 0, count = group.getChildCount(); i < count; ++i) {
    View view = group.getChildAt(i);
    if (view instanceof EditText) {
        ((EditText)view).setText("");
    }
}
 

8voto

user123456 Points 60

utilisez editText.getText (). clear ();

5voto

Shandroid Points 30

Utilisez ediText.getText().clear();

Cela fonctionne comme un charme pour moi.

1voto

TechEnd Points 3846

après avoir cliqué sur une action, faites en-dessous de l'étape

  ((EditText) findViewById(R.id.yoursXmlId)).setText("");
 

ça marche bien pour moi. En espérant à tous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X