首页 > 解决方案 > 如何从 Adapter 类中动态获取 R.drawable.{var}?

问题描述

也许有一种更简单的方法,但我希望根据 API 发送给我的内容加载标志图像。在这种情况下server.flag,德国的“de”。我有一个de.png可以通过R.drawable.de. 所以我希望动态地做到这一点。

class ServerAdapter(private var serverList: ArrayList<ServerRow>) :
    RecyclerView.Adapter<DefaultViewHolder>() {


    override fun onBindViewHolder(holder: DefaultViewHolder, position: Int) {

            ...

            val id = Resources.getSystem().getIdentifier(server.flag, "drawable", holder.itemView.context.packageName)
            Glide.with(holder.itemView.context)
                .load(id)
                .into(holder.getImage(R.id.server_country_flag_id))

}
}

但是我得到一个Unable to find resource ID #0x0. id 显示为 0。请问我错过了什么?

标签: androidkotlin

解决方案


试试这样:

val context = holder.itemView.context
int resourceID = context.resources.getIdentifier(
    server.flag, "drawable", context.packageName
)

虽然 getIdentifer 方法很昂贵,但我不建议在 onBindViewHolder 中执行此操作。您不能在将数据发送到适配器之前进行此转换吗?


推荐阅读