使用变量的 Kotlin 元编程
Kotlin meta programming with variables
我正在创建一个带有动态底部导航菜单的应用程序。每个菜单项的 title
和 icon_name
来自 API 调用。
我已经成功地将 JSON 读入了一组名为 AppNavigation
的模型中,现在我想自定义底部导航图标和标题。
对于标题,这样做很简单
menu.findItem(R.id.action_one).title = sqlAppNavigations[0].name
但事实证明图标要难得多。我的图标名称看起来像 fa_home
或 fa_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)
我正在创建一个带有动态底部导航菜单的应用程序。每个菜单项的 title
和 icon_name
来自 API 调用。
我已经成功地将 JSON 读入了一组名为 AppNavigation
的模型中,现在我想自定义底部导航图标和标题。
对于标题,这样做很简单
menu.findItem(R.id.action_one).title = sqlAppNavigations[0].name
但事实证明图标要难得多。我的图标名称看起来像 fa_home
或 fa_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)