Конечно, вы можете сделать это.Вы не можете получить доступ к члену R.id, используя строковый литерал, вы должны ввести имя переменной.R.id."Test"
не хорошо, но R.id.Test
хорошо.
Если вы изучите тип R.id.XYZ
, вы обнаружите, что это просто целое число.Нет причин, по которым вы не можете выполнять основную арифметику со значениями id
.
Однако на самом деле это не имеет смысла.Когда вы создаете свой APK, компилятор автоматически создает статический класс с именем R
, который содержит ссылки на различные ресурсы и ресурсы, содержащиеся в вашем APK, такие как макеты, рисование, звуки и т. Д.знать, что целочисленное значение для R.id.button1 равно X, нет никакой гарантии, что целочисленное значение для R.id.button2 будет равно X + 1, фактически это может быть что угодно.создайте список TextViews
, чтобы выполнить итерацию, подумайте о добавлении их в список, а затем итерации по списку.Вот так:
ArrayList<TextView> list = new ArrayList<TextView>();
list.add( (TextView) findViewById(R.id.textView1) );
list.add( (TextView) findViewById(R.id.textView2) );
list.add( (TextView) findViewById(R.id.textView3) );
list.add( (TextView) findViewById(R.id.textView4) );
int size = list.getSize();
for (int i=0; i< size; i++)
{
TextView tv = list.get(i);
// Do something with tv like set its label to i
tv.setText(Integer.toString(i));
}