0

我有一个包含 100 个空白 EditTexts 的布局,所有这些都根据它们的行/列 ID 命名(例如 box0101、box0102 等)。

然后我有另一个布局,有 100 个 TextView,布局完全相同,每个都有一个字母,使用相同的约定命名(answerbox0101、answerbox0102 等)

我想编写一个循环来检查 box0101 和 answerbox0101,依此类推,直到其中一个框不匹配,或者它达到 100 并且所有框都匹配。

我很擅长编写循环的逻辑,我的问题是我需要循环参数成为 EditText 名称的一部分!我该如何克服呢?

4

2 回答 2

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;
    } 
}
于 2012-11-22T04:47:12.410 回答
0

您可以使用视图的标记属性来设置字符串属性,例如,如果您正在创建 100 个编辑文本,您可以设置编辑文本的标记,例如 editText0101、editText0102 等,并且在答案 editTexts answerbox0101、answerbox0102 ... 中也是如此。方法,您可以通过标签名称,按方法获得对editText的直接引用findViewByTag()

于 2012-11-22T04:45:33.880 回答