android - 如何在运行时动态或以编程方式创建 findViewById 参数

标签 android

我有一个 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/

相关文章:

android - 为什么单击我的导航图标时我的 NavDrawer 没有打开?

两行的 Android RadioButtons

java - 在新的 Android Studio 中找不到 UI 设计器

android - Android 手机中的 SignalR 推送通知

java - 将 InterstitialAd 与 InterstitialAdListener 结合使用。获取错误消息

java - 在我向 TextView 添加一些单词后,我尝试使用一个简单的按钮更改 java android 中字符串的某些部分,但它不起作用

android - 人行横道与 Eclipse 崩溃

android - 如何在广播接收器中启动 fragment

java - android:字符串值使用操作数==匹配另一个字符串值不起作用?

java - Appium - 通过 Xpath 查找元素