Kurt
Kurt

Reputation: 777

Looping through editTexts to check values

I have one layout with 100 blank EditTexts, all named based on their row / column IDs (e.g. box0101, box0102 etc.).

I then have another layout with 100 TextViews in exactly the same layout with one letter in each, named using the same convention (answerbox0101, answerbox0102 etc.)

I want to write a loop that checks box0101 against answerbox0101, and so on until either one of the boxes does not match up, or it gets to 100 and all the boxes match.

I am fine with writing the logic of the loop, my issue is that i need the looping parameter to be part of the name of the EditText! How can I overcome this?

Upvotes: 0

Views: 977

Answers (2)

Eldhose M Babu
Eldhose M Babu

Reputation: 14510

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

Upvotes: 1

jeet
jeet

Reputation: 29199

You can use Tag Property of View to set String Property, like if you are creating 100 editTexts, you can set tags of edit texts, like editText0101, editText0102, ... and same in answer editTexts answerbox0101, answerbox0102.... by this method you can get direct references of editText by tag name, by findViewByTag() method.

Upvotes: 0

Related Questions