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?
Réponses
Trop de publicités?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.
:)
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("");
}
}