我有一个 xml 布局,它将显示由表格行中的 TextView 组成的网格。 TextView 名称为 cell00、cell01 等。在运行时,我的程序将确定需要更改哪个单元格。
有没有办法获取一个名称的格式,以便它可以在运行时传递给 findViewById 方法?例如,如果需要 cell00,我如何在这段代码中生成参数?
TextView currcell = (TextView) findViewById(R.id.cell00)
诸如“cell”+00 之类的代码无法编译,因为 findViewById 方法不接受 String 类型。我不想在程序中硬编码网格中的每个 TextView 名称——必须有更好的方法。
感谢您提供的任何帮助。
最佳答案
您可以使用反射在 R.id 中查找命名变量的整数值。
Class clazz = R.id.class;
Field f = clazz.getField("cell" + "00");
int id = f.getInt(null); // pass in null, since field is a static field.
TextView currcell = (TextView) findViewById(id);
请记住,反射可能很慢。如果您经常这样做,您可能想要缓存值或想出不同的方法。
关于android - 如何在运行时动态或以编程方式创建 findViewById 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3806847/