2010-11-16 8 views
5

Ho avviato la mia app Android pochi giorni fa poiché avevo bisogno di un'applicazione mobile per archiviare una serie di dati che raccolgo nell'ospedale.Passare in rassegna tutti i "widget"/elementi in un'attività

Sono abbastanza nuovo in ambiente Java e Android, anche se sembra facile da capire e molto simile al C++.

In ogni caso, la mia domanda ha un mucchio di pulsanti di opzione "EditText" e la mia domanda è:

Come posso scorrere tutti quei widget (EditTexts e pulsanti di opzione)?

In .NET è possibile eseguire un ciclo "per ogni elemento nel contenitore" ma non riesco a trovare un modo per farlo in ambiente Java/Android.

Nota: Non so quanti esistono "widget" nell'attività, dal momento che alcuni sono creati dinamicaly, gli altri sono fissi ed alcuni altri mostrano se alcune preferenze dell'utente vengono impostate

Qualsiasi aiuto o suggerimento sarebbe apprezzato.

risposta

4
for (int i = 0; i < rootView.getChildCount(); i++) 
    rootView.getChildAt(i) 

Si noti che questo tornerà View-s, si dovrà verificare in fase di esecuzione esattamente che tipo di vista che si sta guardando

+0

Questo suggerimento sembra puntare nella giusta direzione. – Tivie

+2

Interessante. Ma il punto di partenza era un'attività. Quindi la tua demo manca il passo da attività a rootView ;-) - Probabilmente riesco a capirlo da solo ma sarebbe stato bello. – Martin

1

Funziona.

Per quanto riguarda il tipo di vista (cioè Spinner, radioButton, EditText, etc) siamo in grado di etichettare ogni tipo che vogliamo analizzare nel file XML di layout e quindi aggiungere un condizionale, vale a dire:

if (Widget_Tag != null){ 

     View Current_Widget = (View) rootView.getChildAt(i);   

     String Widget_Tag = (String) Current_Widget.getTag(); 

     if (Widget_Tag.equals("MyEdiText")) { 

     //do something 

     } 
    } 

il if (Widget_Tag! = Null) {è per prevenire NullPointReferences. Puoi anche farlo con un Try/Catch.

+0

Come ho detto alle app: da dove proviene 'rootView'. – Martin

1

Si può provare questo codice:

LayoutInflater inflater = getLayoutInflater(); 
LinearLayout l = (LinearLayout) inflater.inflate(R.layout.main, null); 

ViewGroup Current_Widget = (ViewGroup)l.getRootView(); 

for (int i = 0; i < Current_Widget.getChildCount(); i++) 
    Current_Widget.getChildAt(i); 
Problemi correlati