Ho una vista con radio, ingressi e un pulsante e quando clicco, voglio controllare che tutti gli input contengano informazioni. Come posso scorrere gli elementi della vista nell'attività e controllare se ogni textview soddisfa i requisiti sopra menzionati? Grazie.Come iterare attraverso gli elementi di una vista
52
A
risposta
108
che ho fatto qualcosa di simile in un certo codice non ho con me in questo momento, ma dalla memoria dovrebbe essere qualcosa di simile (assumendo una LinearLayout vista padre con un id di "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;
}
0
Il onClickListener
fornisce l'oggetto View v
; utilizzare View rV = v.getRootView()
per posizionarsi sul modulo. Quindi utilizzare rV.findViewWithTag(...)
o rV.findViewByID(R.id. ...)
per individuare gli elementi del modulo.
14
per applicare il metodo con kcoppock in modo ricorsivo, è possibile modificarlo a questo:
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);
}
}
}
Problemi correlati
- 1. Come iterare gli elementi Queue.Queue in Python?
- 2. Iterare in modo ricorsivo attraverso i nodi in una vista ad albero?
- 3. Come iterare attraverso due oggetti IEnumerable contemporaneamente?
- 4. Iterare attraverso una stringa parola per parola
- 5. Iterare attraverso più elenchi ordinati nell'ordine
- 6. Selenio: Iterare gruppi di elementi
- 7. È possibile iterare attraverso JSONArray?
- 8. Typesafe config: come iterare elementi di configurazione
- 9. iterare attraverso array di hash in Ruby
- 10. iterare su testo e gli elementi in eTree lxml
- 11. Come visualizzare gli elementi nella tela attraverso il binding
- 12. Looping attraverso le proprietà vista del modello in una vista
- 13. come iterare attraverso più opzioni di selezione con jquery
- 14. zip() alternativa per iterare attraverso due iterables
- 15. matlab come iterare attraverso tutti gli oggetti in uno spazio di lavoro
- 16. Looping attraverso gli elementi di un array a ritroso
- 17. Python minidom - come iterare attraverso gli attributi, e ottenere il loro nome e il valore
- 18. jstree jquery come iterare attraverso tutti i nodi
- 19. rimuovere elementi da un HashSet mentre Iterare
- 20. iterare attraverso i risultati record attivo - Ruby on Rails
- 21. Come posso passare l'evento on-click attraverso una vista?
- 22. Iterare gli elenchi nei Makefile?
- 23. Come aggiungere una vista dinamica tra gli elementi di RecyclerView in Android?
- 24. Passare attraverso una casella di riepilogo selezionata e controllare tutti gli elementi C#
- 25. Come si espandono tutti gli elementi nella vista degli elementi di WebKit Inspector?
- 26. come utilizzare l'indice all'interno dell'intervallo in html/template per iterare attraverso array paralleli?
- 27. Algoritmo per iterare attraverso lo spazio campione dei numeri
- 28. modo efficiente per iterare throught elementi XML
- 29. Iterate attraverso gli oggetti JavaScript nidificati
- 30. Backbone.js: vista nidificazione attraverso template
Mi piace il tuo uso di getClass. Immagino che in una tabella o in una simile vista del tipo di contenitore si possa usare una chiamata ricorsiva per raccogliere anche quei bambini interiori, giusto? – Lumis
Buona domanda! Lo penserei. Suppongo che tu possa fare in modo che la funzione formIsValid prenda un parametro View generico, e cast, in modo che tu possa fare qualcosa come 'if (c == TableLayout.class) if (! FormIsValid (v)) restituisca false;'. Dovresti assicurarti di non restituire true dopo il layout nidificato per evitare di abbandonare prima di completare il resto del modulo originale. – kcoppock
Questo è esattamente il mio caso, getChildAt() restituisce solo i tablerows. – xain