2011-01-26 160 views
52

我有一個無線電,輸入和按鈕的視圖,當我點擊它時,我想檢查所有輸入包含信息。我如何迭代活動中的視圖元素並檢查每個textview是否滿足上述要求?謝謝。如何遍歷視圖的元素

回答

108

我在一些代碼中做了類似的事情,但是從內存中它應該是這樣的(假設父視圖LinearLayout的ID爲「layout」):

LinearLayout layout = (LinearLayout)findViewById(R.id.layout); 
boolean success = formIsValid(layout); 

public boolean formIsValid(LinearLayout layout) { 
    for (int i = 0; i < layout.getChildCount(); i++) { 
     View v = layout.getChildAt(i); 
     if (v instanceof EditText) { 
      //validate your EditText here 
     } else if (v instanceof RadioButton) { 
      //validate RadioButton 
     } //etc. If it fails anywhere, just return false. 
    } 
    return true; 
} 
0

您的onClickListener會提供View v對象;使用View rV = v.getRootView()將您自己放置在表單上。然後使用rV.findViewWithTag(...)rV.findViewByID(R.id. ...)來查找您的表單元素。

+1

感謝您的答覆,但一定是一個更加「通用」的方式。就像「遍歷所有視圖的TextView類型的元素」。 – xain 2011-01-26 21:21:26

+0

我認爲,但也無濟於事...... – gssi 2011-01-26 21:28:28

14

要通過kcoppock遞歸的使用方法,你可以把它改成這樣:

private void loopViews(ViewGroup view) { 
    for (int i = 0; i < view.getChildCount(); i++) { 
     View v = view.getChildAt(i); 

     if (v instanceof EditText) { 
      // Do something 

     } else if (v instanceof ViewGroup) { 

      this.loopViews((ViewGroup) v); 
     } 
    } 
}