通过editTexts检查值循环(Looping through editTexts to chec

2019-08-03 02:32发布

我有一个布局与100个空白EditTexts,都根据自己的行/列的ID命名(如box0101,box0102等)。

然后我有100个TextViews另一个布局完全相同的布局与每一个字母,使用相同的命名惯例(answerbox0101,answerbox0102等)

我想写一个循环,检查box0101对answerbox0101,依此类推,直到箱中的任何一个不匹配,或者它获取到100,所有的箱子比赛。

我很好的写循环的逻辑,我的问题是,我需要的循环参数是EditText上的名称的一部分! 我该如何克服这个问题?

Answer 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;
    } 
}


Answer 2:

您可以使用View的标签属性设置String属性,就像如果你正在创建100个editTexts,您可以设置编辑文本标记,如editText0101,editText0102,...在回答editTexts answerbox0101,answerbox0102相同....本方法,你可以通过标签名获得EDITTEXT的直接引用,通过findViewByTag()方法。



文章来源: Looping through editTexts to check values