我有一个包含100个空白EditTexts的布局,所有这些都基于行/列ID命名(例如box0101,box0102等)。
然后我有另外一个布局,其中100个TextViews布局完全相同,每个布局都有一个字母,使用相同的约定命名(answerbox0101,answerbox0102等)。
我想写一个循环来检查box0101与answerbox0101,依此类推,直到其中一个框不匹配,或者它变为100并且所有框都匹配。
我很好编写循环的逻辑,我的问题是我需要循环参数作为EditText名称的一部分!我怎么能克服这个?
答案 0 :(得分: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;
}
}
答案 1 :(得分:0)
您可以使用View属性设置字符串属性,就像创建100个editTexts一样,您可以设置编辑文本的标签,如editText0101,editText0102,...和answer editTexts answerbox0101,answerbox0102中的相同...通过此方法,您可以通过findViewByTag()
方法按标记名称直接引用editText。