2012-11-22 31 views
0

我有一個包含100個空白EditTexts的佈局,所有命名都基於它們的行/列ID(例如box0101,box0102等)。循環瀏覽editTexts以檢查值

我再有100個TextViews另一個佈局完全相同的佈局與每一個字母,使用相同的約定(answerbox0101,answerbox0102等)

命名我想寫一個循環,檢查box0101對answerbox0101等等,直到其中一個框不匹配,或者它達到100並且所有框匹配。

我很好,編寫循環的邏輯,我的問題是,我需要循環參數成爲EditText的名稱的一部分!我該如何克服這一點?

+0

你能提一下有多少行和coloumns? – Vins

回答

1
for(int i=0;i<ROW_COUNT;i++){ 
    for(j=0;j<COLUMN_COUNT;j++){ 
     int editTextId=getResId("box"+i+j,this,id.class); 
     int textViewId=getResId("answerbox"+i+j,this,id.class); 

     EditText et=(EditText)findViewById(editTextId); 
     TextView tv=(TextView)findViewById(textViewId); 

     //Then do your comparison as you like and do the rest. 
    } 
} 

public static int getResId(String variableName, Context context, Class<?> c) { 

    try { 
     Field idField = c.getDeclaredField(variableName); 
     return idField.getInt(idField); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return -1; 
    } 
} 
0

您可以使用視圖的標籤屬性來設置字符串屬性,就像如果您正在創建100個editTexts一樣,您可以設置編輯文本的標籤,如editText0101,editText0102,...和答案中的相同editTexts answerbox0101,answerbox0102 .. ..通過這種方法,您可以通過標記名稱,通過findViewByTag()方法獲得editText的直接引用。