2011-09-17 8 views
7

Powiedzmy, że wygenerowałem dynamicznie pewną ilość LinearLayout, wszystkie z różnymi tagami.Jak znaleźć FindViewByTag?

for (int i = 0; i <= 5; i++) 
{ 
     final LinearLayout LinLayBtn = new LinearLayout(this); 
     LinLayBtn.setTag("id"+String.valueOf(i)); 
     ... 

Teraz muszę jakoś uzyskać dostęp do tego układu, podając numer tagu z innej metody.

LinearLayout LinLayBtn = (LinearLayout)findViewWithTag("1"); 

Jaki byłby najlepszy sposób na zrobienie tego?

Dzięki!

+0

Preferuję prefiksy znaczników literami, nie wiem, czy "numer identyfikatora znacznika" wcale nie jest zły ... –

+0

zrobione. :) ale nadal, w jaki sposób powinienem uzyskać do niego dostęp później? – Roger

+0

Jeśli utworzyłeś widoki, dlaczego musisz je znaleźć, znasz je już. –

Odpowiedz

8

Czy wypróbowałeś to w ten sposób i znalazłeś z tym problem?

Musisz dokonać tej linii

LinearLayout LinLayBtn = (LinearLayout)findViewWithTag("1"); 

dopasować schemat nazewnictwa został użyty po ustawieniu znacznika. Więc czego chcesz coś takiego w swoim przykładzie:

LinearLayout LinLayBtn = (LinearLayout)findViewWithTag("id1"); 

Jeśli trzeba zrobić wiele z tych wyszukiwań choć prawdopodobnie byłoby lepsze podejście do przechowywania referencji widok w tablicy podczas tworzenia ich tak nie musisz mieć wszystkich połączeń findView. Lub jak @Muhammad zasugerował i użyj parent.getChild (index i);

+0

http://developer.android.com/reference/android/view/View.html#findViewWithTag%28java.lang.Object%29 findViewWithTag() to prawdziwa metoda klasy View ... – FoamyGuy