Tengo una vista con radios, entradas y un botón y cuando hago clic en ella, quiero verificar que todas las entradas contengan información. ¿Cómo puedo iterar a través de los elementos de la vista en la actividad y verificar si cada vista de texto cumple con el requisito antes mencionado? Gracias.Cómo iterar a través de los elementos de una vista
52
A
Respuesta
108
que he hecho algo similar en algún código no tengo conmigo en este momento, pero a partir de la memoria que debe ser algo como esto (suponiendo una vista padre LinearLayout con un ID de "diseño"):
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;
}
0
Su onClickListener
suministra el objeto View v
; use View rV = v.getRootView()
para posicionarse en el formulario. Luego, use rV.findViewWithTag(...)
o rV.findViewByID(R.id. ...)
para ubicar los elementos de su formulario.
14
para aplicar el método por el kcoppock de forma recursiva, puede cambiarlo a esto:
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);
}
}
}
Cuestiones relacionadas
- 1. Iterar a través de elementos en una enumeración en Delphi
- 2. Iterar a través de una matriz C
- 3. ¿Cómo puedo iterar a través de elementos DOM en PHP?
- 4. Cómo iterar a través de una cadena
- 5. Cómo iterar a través de una DataTable
- 6. ¿Cómo iterar a través de los elementos DOM que coinciden con una clase css utilizando xpath?
- 7. Cómo iterar a través de SAFEARRAY **
- 8. Cómo iterar a través de los nodos de XDocument
- 9. Iterar a través de DataSet
- 10. Cómo iterar a través de un fd_set
- 11. Cómo iterar a través de todos los objetos Bundle
- 12. ¿Cómo iterar sobre los primeros n elementos de una lista?
- 13. Iterar a través de 2 listas
- 14. mysql, iterar a través de los nombres de columna
- 15. ¿Cómo puedo iterar a través de una cadena en Python?
- 16. iterar a través de los parámetros de saltarse la primera
- 17. Iterar a través de los parámetros del método
- 18. Iterar a través de los componentes de pestaña en JTabbedPane
- 19. Problemas al eliminar elementos de una lista al iterar a través de la lista
- 20. iOS: reenviar todos los toques a través de una vista
- 21. Iterar los primeros n elementos de una matriz
- 22. ¿Cómo puedo iterar a través de elementos de QListWidget y trabajar con cada elemento?
- 23. ¿Cómo iterar a través de dos IEnumerables simultáneamente?
- 24. Iterar a través de una matriz de dimensión arbitraria
- 25. ¿Es esta una buena manera de iterar a través de .NET LinkedList y eliminar elementos?
- 26. ¿Cómo puedo iterar a través de los puntos de código Unicode de una cadena Java?
- 27. Jsoup seleccione e iterar todos los elementos
- 28. Iterar a través de NSData bytes
- 29. Iterar a través de una matriz de cadenas en Java
- 30. ¿Cómo iterar a través de elementos hash, en un entorno R?
Me gusta el uso de getClass. Supongo que en una tabla o similar tipo de contenedor de visitas se podría usar una llamada recursiva para recoger también a esos niños internos, ¿verdad? – Lumis
¡Buena pregunta! Yo pensaría que sí. Supongo que puede hacer que la función formValid tome un parámetro de vista genérico y emitir, para que pueda hacer algo como 'if (c == TableLayout.class) if (! FormIsValid (v)) return false;'. Tendrías que asegurarte de no solo regresar verdadero después del diseño anidado para evitar abandonar antes de terminar el resto del formulario original. – kcoppock
Ese es precisamente mi caso, getChildAt() devuelve solo las tablas. – xain