2010-11-16 74 views
5

由於我需要移動應用程序來存儲我在醫院收集的一堆數據,因此我幾天前創建了自己的Android應用程序。循環瀏覽活動中的所有「小部件」/元素

我對Java和android環境相當陌生,雖然它看起來很容易理解並且非常類似於C++。

不管怎樣,我的應用程序有一堆「的EditText」和單選按鈕的,我的問題是:

我怎麼能遍歷所有這些部件(EditTexts和單選按鈕)?

在.NET中,你可以做一個「爲容器中的每個元素」循環,但我似乎無法找到一種方法來在Java/Android環境中執行此操作。

注:我不知道。「小部件」存在多少的活動,因爲有些dinamicaly創建,別人硬編碼和其他一些顯示,如果某些用戶首選項設置

任何幫助或提示爲讚賞。

回答

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

注意這將返回查看-S,你將不得不在運行時準確地檢查什麼類型查看你正在看

+0

這個技巧似乎是在朝着正確的方向指向。 – Tivie 2010-11-16 22:15:55

+2

有趣。但起點是一個活動。所以你的演示中缺少從活動到rootView的步驟;-) - 我可能可以自己弄清楚,但它本來不錯。 – Martin 2012-01-01 18:25:48

1

它的工作原理。

關於視圖類型(即微調,單選按鈕,EditText上,等等),我們可以標記我們想要的佈局XML文件中解析,然後每種類型添加一個條件,即:

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 

     } 
    } 

的,如果( Widget_Tag!= null){是爲了防止NullPointReferences。你也可以用Try/Catch來做它。

+0

就像我對應用說的那樣:'rootView'來自哪裏。 – Martin 2012-01-01 18:26:48

1

你可以試試這個代碼:

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); 
相關問題