我正在構建「表單驗證」方法,以查看所有EditText對象都不爲空。檢索所有視圖對象,android
我想爲每個EditText對象調用相同的方法(在一個循環中),我怎樣才能將它們全部取回?
p.s.他們defind在一個XML文件,而不是在java文件,如果它的事項
我正在構建「表單驗證」方法,以查看所有EditText對象都不爲空。檢索所有視圖對象,android
我想爲每個EditText對象調用相同的方法(在一個循環中),我怎樣才能將它們全部取回?
p.s.他們defind在一個XML文件,而不是在java文件,如果它的事項
您可以步行所有的孩子,看它是否在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();
}
通過你們的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){
}
}
如果parent.getChildAt(i)返回一個ViewGroup實例的視圖,那麼您也需要走過該View的子節點。另外,你可以用'if(parent.getChildAt(i)instanceof EditText){}' – 2011-06-15 19:14:13
nice catch :)(當然試試);)來有條件地執行該部分, – woodshy 2011-06-15 19:16:13
確定,第一種方法的所有兒童迭代:我如何讓所有的孩子的名單? 和第二種方法:你是說我應該保存所有的id在這個數組中,不管它們是EditText對象還是不是?謝謝! – yotamoo 2011-06-15 19:09:19
用第二種方法的示例更新了答案。如果你想用第一種方法,使用'ViewGroup.getChildCount()'和'ViewGroup.getChildAt(index)'。你需要遞歸地做到這一點。 – 2011-06-15 19:11:53