Я нахожусь на ранних стадиях разработки Android, и у меня возникла проблема с циклом for
.Android Java: Использование setOnClickListener in for loop
Вот мой код:
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);
}
}
});
}
У меня есть TableRows
и два textViews
в каждом TableRows
. Когда я нажимаю первый textView1[i]
, второй, textView2[i]
будет невидимым или видимым.
Но в setOnClickListener
кодовый блок у меня был «переменная« i »доступна изнутри внутреннего класса, который должен быть объявлен окончательным» кодом ошибки.
Я объявил i
как final
, как for(final int i=0; i<=30; i++)
. Тогда у меня была другая ошибка. «Variable„я“не может быть объявлен окончательный»
вы не можете изменить значение конечного variable.remember, что –
Declare я, как переменная члена. –