我有一个xml布局,它将显示由tablerows中的textviews组成的网格.textview名称是cell00,cell01等.在运行时,我的程序将确定需要更改哪个单元格.
有没有办法让格式成为一个名称,以便它可以在运行时传递给findViewById方法?例如,如果需要cell00,我该如何在此代码中生成parm?
TextView currcell = (TextView) findViewById(R.id.cell00)
Run Code Online (Sandbox Code Playgroud)
像"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);
Run Code Online (Sandbox Code Playgroud)
请记住,反思可能会很慢。如果您经常这样做,您可能想要缓存值或想出不同的方法。