Comment parcourir les éléments d'une vue
J'ai une vue avec des radios, des entrées et un bouton et quand je clique dessus, je veux vérifier que toutes les entrées contiennent des informations. Comment puis-je parcourir les éléments de la vue dans l'activité et vérifier si chaque textview répond à l'exigence susmentionnée ? Grâce.
3 réponses
J'ai fait quelque chose de similaire dans un code que je n'ai pas avec moi pour le moment, mais de mémoire cela devrait être quelque chose comme ceci (en supposant une vue parent LinearLayout avec un id de "layout"):
LinearLayout layout = (LinearLayout)findViewById(R.id.layout);
boolean success = formIsValid(layout);
public boolean formIsValid(LinearLayout layout) {
for (int i = 0; i < layout.getChildCount(); i++) {
View v = layout.getChildAt(i);
if (v instanceof EditText) {
//validate your EditText here
} else if (v instanceof RadioButton) {
//validate RadioButton
} //etc. If it fails anywhere, just return false.
}
return true;
}
Pour appliquer la méthode par kcoppock récursivement, vous pouvez la changer à ceci:
private void loopViews(ViewGroup view) {
for (int i = 0; i < view.getChildCount(); i++) {
View v = view.getChildAt(i);
if (v instanceof EditText) {
// Do something
} else if (v instanceof ViewGroup) {
this.loopViews((ViewGroup) v);
}
}
}
Votre onClickListener
fournit l'objet View v
; Utilisez View rV = v.getRootView()
pour vous positionner sur le formulaire. Ensuite, utilisez rV.findViewWithTag( ... )
ou rV.findViewByID(R.id. ... )
pour localiser vos éléments de formulaire.