user3897004
user3897004

Reputation:

Inner class - final variable can't be looped?

I'm trying to make a loop that gives each button a method with a parameter dependent on what button it is. I keep getting the error:

i is not a final variable - must be if nested in an inner class.

for (int i = 0; i < 14; i++) {
    buttons[i].setOnClickListener(new Button.OnClickListener() {
        public void onClick(View v) {
            // issue is with i value here
            move.makeMove(move.cups.get(i);
            updateButtons();
        }
    });
    currentCup = nextCup;
}

Upvotes: 1

Views: 47

Answers (1)

abbath
abbath

Reputation: 2482

Try this way:

for (int i = 0; i < 14; i++) {
    final int currentI = i;
    buttons[i].setOnClickListener(new Button.OnClickListener() {
        public void onClick(View v) {
            // issue is with i value here
            move.makeMove(move.cups.get(currentI);
            updateButtons();
        }
    });
    currentCup = nextCup; 
}

Upvotes: 1

Related Questions