2010-11-10 14 views
8

Sto tentando di modificare due TextViews esattamente nello stesso modo. Ho pensato di poter dare loro lo stesso id e con i metodi findViewById() e setText() cambia quelle di TextView in due righe. Ma sembra che solo un TextView sia cambiato.Due elementi XML con lo stesso ID

C'è un modo per farlo? Oppure devo fare id diversi per ogni elemento, ottenere ogni elemento dal metodo findViewById() e impostarlo come testo?

+0

Perché dovresti farlo? – Macarse

+1

Android! = JQuery – Felix

+0

Perché dovrei farlo? Ho due LinearLayouts sul widget che sono compilati in modo diverso (diversi valori di gravità degli elementi). Ho pensato che sarebbe stato più semplice fare due diversi layout e renderne visibile uno e l'altro se necessario. – Seraphis

risposta

5

Gli ID vista sono semplici numeri interi, quindi è sufficiente disporre di una serie di ID che si desidera modificare. Per esempio:

int[] ids = { R.id.text1, R.id.text2, ... }; 
for (int id: ids) { 
    TextView tv = (TextView) findViewById(id); 
    tv.setText("Hello, World!"); 
} 

Naturalmente, sarebbe meglio avere ids come un membro della classe finale statico. I.e .:

public class MyActivity extends Activity { 
    private static final int[] textViewIDs = { 
     R.id.text1, 
     R.id.text2, 
     ... 
    } 
    ... 
} 
+0

Vedo che è l'unica soluzione per il mio problema. Grazie – Seraphis

0

È necessario definire due diversi ID. Non c'è modo di avere un widget con lo stesso id di un altro poiché entrambi sono due widget diversi e indipendenti.

0

Un ID è univoco per ogni Vista. Pertanto non può essere condiviso. Quello che puoi fare è avere entrambi gli ID di visualizzazione recuperati nel codice e avere le condizioni per modificare il testo. Come se (id == id1 & & id == id2) quindi modificare il testo.

+0

Cosa intendi per "avere entrambi gli ID di visualizzazione recuperati nel codice"? Mi puoi spiegare quale TextView sarebbe stato modificato in quella condizione? – Seraphis

Problemi correlati