我正在尝试根据列表项的位置为某些对话框属性设置一些值,并且刚刚将某些代码从Java转换为Kotlin,但是由于某些原因,点击监听器中的所有myList[position]
实例都会返回此值错误:
'getter for position:Int'已弃用。在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()
}
}
}
}
答案 0 :(得分:1)
我假设您是在谈论ViewHolder类中对position
的引用。
在此使用adapterPosition
。 Java等效为getAdapterPosition()
。如果您在Java中使用getPosition()
,则可能已取消了弃用警告。
答案 1 :(得分:0)
此方法已弃用。当适配器嵌套其他适配器时,此方法会造成混淆。如果您在 Adapter 的上下文中调用它,您可能想要调用 getBindingAdapterPosition() 或者如果您想要 RecyclerView 看到的位置,您应该调用 getAbsoluteAdapterPosition()。