Getter 在将代码转换为 Kotlin 后被弃用

Getter is deprecated after converting code to Kotlin

我正在尝试根据列表项位置为某些对话框属性设置一些值,并且刚刚将一些代码从 Java 转换为 Kotlin,但出于某种原因,所有 myList[position] 实例在点击侦听器中 return 此错误:

'getter for position: Int' is deprecated. Deprecated in Java.

但是对于 onBindViewHolder 可以使用什么替代方法来解决此错误?

class MyRVAdapter(private val myList: ArrayList<Item>) : RecyclerView.Adapter<MyRVAdapter.ViewHolder>() {
    override fun getItemCount(): Int {
        return myList.size
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.myBtn.text = (myList[position].textBtnTitle)
     }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val v = LayoutInflater.from(parent.context).inflate(R.layout.my_cv, parent, false)

        return ViewHolder(v)
    }

    class ViewHolder (itemView : View):RecyclerView.ViewHolder(itemView) {
        val myBtn = itemView.findViewById<Button>(R.id.btn_a)!!

        init {
            myBtn.setOnClickListener {
                val builder = AlertDialog.Builder(myBtn.context)
                builder.setTitle(myList[position].txtDialogTitle)
                builder.setMessage(myList[position].txtDialogMessage)
                builder.setPositiveButton(android.R.string.ok){ dialog, _ -> dialog.dismiss() }

                val dialog: AlertDialog = builder.create()
                dialog.show()
            }
        }
    }
}

我假设您是在谈论 ViewHolder class.

中对 position 的引用

请改用 adapterPosition。 Java 等价于 getAdapterPosition()。如果您在 Java 中使用 getPosition(),您可能已经抑制了弃用警告。

This method is deprecated. This method is confusing when adapters nest other adapters. If you are calling this in the context of an Adapter, you probably want to call getBindingAdapterPosition() or if you want the position as RecyclerView sees it, you should call getAbsoluteAdapterPosition().

[来源:https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder#getAdapterPosition()]