而不是执行以下操作,
ButtonHandler bh = new ButtonHandler();
findViewById(R.id.button1).setOnClickListener(bh);
findViewById(R.id.button2).setOnClickListener(bh);
findViewById(R.id.button3).setOnClickListener(bh);
这看起来过于冗长,我试图按照以下方式重写它们但却失败了。
ButtonHandler bh = new ButtonHandler();
for (int id : int[]{R.id.button1, R.id.button2, R.id.button3}) {
findViewById(id).setOnClickListener(bh);
}
如何使用循环结构迭代一些视图id如上所述?
答案 0 :(得分:1)
您可以直接访问ID
import java.lang.reflect.Field;
for (int i = 1; i < 4; i++) {
int id = R.id.class.getField("button" + i).getInt(0);
tv[i] = (TextView)findViewById(id);
tv[i].setOnClickListener(bh);
}
这里的诀窍是R.class文件并不复杂。致电R.id.something
即可访问something
班级内的R.id
字段。
答案 1 :(得分:1)
ButtonHandler bh = new ButtonHandler();
int[] arr = {R.id.button1, R.id.button2, R.id.button3};
for (int id : arr) {
findViewById(id).setOnClickListener(bh);
}
只是声明外面的数组解决了我的问题。