使用变量的 Kotlin 元编程

Kotlin meta programming with variables

我正在创建一个带有动态底部导航菜单的应用程序。每个菜单项的 titleicon_name 来自 API 调用。

我已经成功地将 JSON 读入了一组名为 AppNavigation 的模型中,现在我想自定义底部导航图标和标题。

对于标题,这样做很简单

menu.findItem(R.id.action_one).title = sqlAppNavigations[0].name

但事实证明图标要难得多。我的图标名称看起来像 fa_homefa_users。我需要获取此字符串值并使用它从所有 FontAwesome 图标的大枚举中获取图标。

menu.findItem(R.id.action_one).icon = FontAwesomeIcons.fa_home)

在 Ruby 和 Rails 中,我会使用 FontAwesomeIcons.send('fa_home') 但我不知道在 Kotlin 中如何完成同样的事情(或者是否有可能使用已编译的语言)。

每个 Enum 都有几个隐式方法,其中一个是我相信您正在寻找的方法:EnumClass#valueOf(String)

menu.findItem(R.id.action_one).icon = FontAwesomeIcons.valueOf(sqlAppNavigations[0].icon)

Working with Enum Constants