2010-11-16 23 views
5

Tôi đã bắt đầu ứng dụng Android của riêng mình cách đây vài ngày vì tôi cần một ứng dụng di động để lưu trữ một loạt dữ liệu tôi thu thập được trong bệnh viện.Lặp qua tất cả "tiện ích"/yếu tố trong một Hoạt động

Tôi khá mới đối với môi trường Java và Android, mặc dù nó có vẻ dễ hiểu và rất giống với C++.

Dù sao, ứng dụng của tôi có một loạt các "EditText" và nút radio và câu hỏi của tôi là:

Làm thế nào tôi có thể lặp qua tất cả những vật dụng (EditTexts và nút radio)?

Trong .NET bạn có thể tạo vòng lặp "cho mỗi phần tử trong vùng chứa" nhưng tôi dường như không thể tìm ra cách để làm điều này trong môi trường Java/android.

Lưu ý: Tôi không biết có bao nhiêu "widget" tồn tại trong hoạt động này, vì một số được tạo ra dinamicaly, những người khác được mã hóa và một số người khác cho thấy nếu một số sở thích người dùng được thiết lập

Bất kỳ sự giúp đỡ hoặc gợi ý sẽ là đánh giá cao.

Trả lời

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

Lưu ý rằng điều này sẽ return View-s, bạn sẽ phải kiểm tra trong thời gian chạy chính xác những gì loại Xem bạn đang nhìn vào

+0

Mẹo này dường như chỉ đi đúng hướng. – Tivie

+2

Thú vị. Nhưng điểm bắt đầu là một hoạt động. Vì vậy, demo của bạn là thiếu các bước từ hoạt động để rootView ;-) - Tôi có thể có thể tìm ra nó bản thân mình, nhưng nó sẽ có được tốt đẹp. – Martin

1

Nó hoạt động.

Về Xem loại (tức Spinner, Radiobutton, EditText, vv), chúng tôi có thể đánh dấu từng loại chúng tôi muốn phân tích cú pháp trong file Layout XML và sau đó thêm một điều kiện, ví dụ:

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 (Widget_Tag! = Null) {là để ngăn chặn NullPointReferences. Bạn cũng có thể làm điều đó với một Try/Catch.

+0

Như tôi đã nói với các ứng dụng: đó là 'rootView' đến từ đâu. – Martin

1

Bạn có thể thử mã này:

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); 
Các vấn đề liên quan