如何从Adapter类中动态获取R.drawable。{var}?

时间:2020-10-27 07:54:02

标签: android kotlin

也许有一种更简单的方法,但是我希望根据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。 我想念什么?

1 个答案:

答案 0 :(得分:0)

尝试这样:

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

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

相关问题