2010-11-16 15 views
5

Birkaç gün önce kendi android uygulamamı başlattım çünkü hastanede topladığım bir grup veriyi depolamak için bir mobil uygulamaya ihtiyacım vardı.Bir Aktivitedeki tüm "widget'lar"/elemanların içinden geç

C++ 'ya çok benzer ve anlaşılabilir gibi görünse de, Java ve android ortamına oldukça yeni yaşıyorum.

Neyse, başvurum "edittext" ve radyo düğmeleri bir grup var ve sorum şu:

nasıl tüm bu widget (EditTexts ve radyo düğmeleri) yinelemek?

.NET'te "kapsayıcıdaki her öğe için" döngüsünü yapabilirdiniz ancak Java/android ortamında bunu yapmanın bir yolunu bulamıyorum.

Not: Bazı başkalarının önceden kodlanmıştır, dinamicaly oluşturulur beri "Widget'lar" faaliyet var ve bazıları ise bazı kullanıcı tercihleri ​​

Herhangi yardım ayarlanır veya ipucu olurdu göstermek kaç bilmiyorum takdir. Bu Görünüm-s döneceğini

cevap

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

Not, şu anda Çalışıyor

+0

Bu ipucu doğru yönde işaret gibi görünüyor. – Tivie

+2

İlginç. Ama başlangıç ​​noktası bir etkinlikti. Yani senin demo, rootView ;-) aktivitesinden adım eksik - Muhtemelen bunu kendim çözebilirim ama güzel olurdu. – Martin

1

bakıyorsun View tam olarak ne tür çalışma zamanında kontrol etmek gerekir.

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 

     } 
    } 

if (: Biz sonra Düzen XML dosyasında ayrıştırmak ve istediğiniz her türü etiketleyebilirsiniz Görünüm türü (vs yani Spinner, radioButton, EditText,) yani şartlı eklemek İlişkin

Widget_Tag! = Null) {NullPointReferences'ı önlemek içindir. Bunu bir Try/Catch ile de yapabilirsiniz.

+0

Uygulamalara dediğim gibi: rootView' nereden geliyor. – Martin

1

Bu kodu deneyebilirsiniz:

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);