I'm in the early stages of android development and I had a problem with a for
loop.
Here is my code:
for (int i=0; i<=30; i++){
tableRows[i] = new TableRow(this);
tableRows[i].setId(i);
tableRows[i].setLayoutParams(tableRowParams);
tableRows[i].setBackgroundResource(R.drawable.bg);
textViews1[i] = new TextView(this);
textViews1[i].setText("Eng Kelime " + i);
textViews1[i].setTextSize(25);
textViews1[i].setTextColor(Color.WHITE);
textViews1[i].setId(i);
textViews1[i].setPadding(20, 30, 0, 0);
textViews1[i].setLayoutParams(Params2);
tableRows[i].addView(textViews1[i]);
textViews2[i] = new TextView(this);
textViews2[i].setText("Tr Kelime " + i);
textViews2[i].setTextSize(25);
textViews2[i].setTextColor(Color.WHITE);
textViews2[i].setId(i);
textViews2[i].setPadding(30,30,0,0);
textViews2[i].setLayoutParams(Params2);
tableRows[i].addView(textViews2[i]);
tableLayout.addView(tableRows[i]);
textViews1[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//These textViews[i] veriables need to be declared final.
//But I don't know how!..
if (textViews2[i].getVisibility() == View.VISIBLE) {
textViews2[i].setVisibility(View.INVISIBLE);
}else{
textViews2[i].setVisibility(View.VISIBLE);
}
}
});
}
I have TableRows
and two textViews
in each TableRows
. When I click the first textView1[i]
, the second one, textView2[i]
will be invisible or visible.
But in setOnClickListener
code block I had "variable 'i' is accessed from within inner class needs to be declared final" error code.
I have declared i
as final
, like for(final int i=0; i<=30; i++)
. Then I had a different error. "Variable 'i' Can not be declared final"
Declare a new variable j
and modify your code as:
final int j = i;
textViews1[j].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (textViews2[j].getVisibility() == View.VISIBLE) {
textViews2[j].setVisibility(View.INVISIBLE);
}else{
textViews2[j].setVisibility(View.VISIBLE);
}
}
});
Try this. This will work.