2011-06-15 44 views
2

我正在構建「表單驗證」方法,以查看所有EditText對象都不爲空。檢索所有視圖對象,android

我想爲每個EditText對象調用相同的方法(在一個循環中),我怎樣才能將它們全部取回?

p.s.他們defind在一個XML文件,而不是在java文件,如果它的事項

回答

1

您可以步行所有的孩子,看它是否在instanceof EditText,但我認爲更好的辦法是有ID的int[]和迭代並調用findViewById()以獲取個體EditText實例。

int[] editIds = new int[] { R.id.edit1, R.id.edit2, R.id.edit3 }; 

for (int id : editIds) { 
    MyEditText text = (MyEditText) findViewById(id); 
    text.validate(); 
} 
+0

確定,第一種方法的所有兒童迭代:我如何讓所有的孩子的名單? 和第二種方法:你是說我應該保存所有的id在這個數組中,不管它們是EditText對象還是不是?謝謝! – yotamoo 2011-06-15 19:09:19

+0

用第二種方法的示例更新了答案。如果你想用第一種方法,使用'ViewGroup.getChildCount()'和'ViewGroup.getChildAt(index)'。你需要遞歸地做到這一點。 – 2011-06-15 19:11:53

1

通過你們的ViewGroup

final int count = parent.getChildCount(); 
for(int i = 0; i < count ; i++){ 
    try{ 
     EditText et = (EditText)parent.getChildAt(i);//this causes exception if view is not EditText 

     //perform validation here 
    } 
    catch(Exception e){ 
    } 
} 
+0

如果parent.getChildAt(i)返回一個ViewGroup實例的視圖,那麼您也需要走過該View的子節點。另外,你可以用'if(parent.getChildAt(i)instanceof EditText){}' – 2011-06-15 19:14:13

+0

nice catch :)(當然試試);)來有條件地執行該部分, – woodshy 2011-06-15 19:16:13