2012-03-29 19 views
7

UI widget'ları için etiket ayarlıyorum ve belirli bir etikete sahip Görünüm listesini almak istiyorum. View.findViewWithTag("test_tag")'u kullanarak, yalnızca bir destek etiketini görüntülemeyen tüm görünümü görüntüle.Belirli bir Etikete sahip görünüm (ler) in listesini bulma (özellik)

Herhangi bir yardım için teşekkür ederiz.

+0

waqas benzer bir sorum var. bana ne yapacağımı söyler misin? http://stackoverflow.com/questions/17061833/androidone-button-id-for-many-buttons-on-expandable-list-children – user2468835

+0

Bkz: http://android-wtf.com/2013/06/ nasıl-kolayca-traverse-any-view-hierarchy-in-android/ – Jamol

cevap

13

Bu yöntemden bir dizi görünüm beklememelisiniz, çünkü yöntem imzası tek bir görünüm döndüreceğini bildiriyor.

public final View findViewWithTag (Object tag) 

Ancak, ne yapmak olabilir ViewGroup olarak düzeni aşıp kendi etiketinde bir göz-up yaparak istediğiniz görünüme öğrenmek için tüm alt görünümler arasında yineleme etmektir. Örneğin:

/** 
* Get all the views which matches the given Tag recursively 
* @param root parent view. for e.g. Layouts 
* @param tag tag to look for 
* @return List of views 
*/ 
public static List<View> findViewWithTagRecursively(ViewGroup root, Object tag){ 
    List<View> allViews = new ArrayList<View>(); 

    final int childCount = root.getChildCount(); 
    for(int i=0; i<childCount; i++){ 
     final View childView = root.getChildAt(i); 

     if(childView instanceof ViewGroup){ 
      allViews.addAll(findViewWithTagRecursively((ViewGroup)childView, tag)); 
     } 
     else{ 
      final Object tagView = childView.getTag(); 
      if(tagView != null && tagView.equals(tag)) 
       allViews.add(childView); 
     } 
    } 

    return allViews; 
} 
+0

Bu yöntemin sadece bir Görünüm döndürdüğünü biliyorum. Tüm görüşleri almanın basit bir yolunu arıyorum. Bir ViewGroup ile yinelenen bir çözüm optimize edilmediğini düşünüyorum. – Behnam

+0

Optimize edilmiş bir çözüm olmadığını nereden biliyorsunuz? – waqaslam

+0

Tam olarak bilmiyorum, optimize edilmiş göreli şeydir, bu yüzden daha iyi bir çözüm bulunamazsa, optimize edilebilir. Bu şekilde biliyordum ama bir sebepten dolayı kullanmak istemiyorum. ama sonunda daha iyi bir çözüm bulunamazsa cevabınızı kabul edeceğim. – Behnam

0
int tags = 6; 
    for (int index = 0; index < tags; index++) { 
     try{ 
      TextView txtView = (TextView)getView().getRootView().findViewWithTag("txtTag-"+index); 
      txtView.setText(" TWitter/ @MOIALRESHOUDI "); 
     } catch (Exception e){} 
    } 

umut bu kimse yardımcı olur!

İlgili konular